晴空的code 2022-05-27 23:01 采纳率: 76.9%
浏览 15
已结题

C语言文件处理问题!@#

文件中的开头内容是明明是空格,为什么却输出了1

#include<stdio.h>
#include<stdlib.h>
int main()
{

    int i, n;
    FILE* fp;
    if ((fp = fopen("temp", "w+")) == NULL)
    {
        exit(0);
    }
    for (i = 1; i <= 10; i++)
        fprintf(fp, "%3d", i);
    /*for (i = 0; i < 5; i++)
    {
        fseek(fp, i * 6L, SEEK_SET);
        fscanf(fp, "%d", &n);
        printf("%3d", n);
    }*/
    fseek(fp, 0, SEEK_SET);
    fscanf(fp, "%d", &n);
    printf("%3d", n);
    printf("\n");
    fclose(fp);

    return 0;
}



img

img

  • 写回答

1条回答 默认 最新

  • 李林罡 2022-05-27 23:47
    关注

    把21行读取的fscanf(fp, "%d", &n);中的%d换为%c,即可
    原因是%d格式读取时会忽略前面的空格
    修改后代码如下

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
     
        int i;
        char n;
        FILE* fp;
        if ((fp = fopen("temp", "w+")) == NULL)
        {
            exit(0);
        }
        for (i = 1; i <= 10; i++)
            fprintf(fp, "%3d", i);
        
        printf("\n");
        fseek(fp, 0, SEEK_SET); 
        while(fscanf(fp, "%c", &n)!=EOF){
            printf("%c", n);
        }
        
        printf("\n");
        fseek(fp, 0, SEEK_SET); 
        fscanf(fp, "%c", &n);
        if(n==' '){
             printf("n是空格 ");
        }
       
        printf("\n");
        fclose(fp);
     
        return 0;
    }
     
    

    img

    希望能帮到你。

    关于%d读取时空格忽略的验证实验如下,

    img

    #include <stdio.h>
    int main()
    {
        int n;
        printf("请输入一个数:");
        fscanf(stdin,"%d",&n);//忽略前面的空格直到取到第一个数字 
        printf("\n输入的数是%d",n);
        printf("\n");
        char line;
        fscanf(stdin,"%c",&line);//取出上次回车输入的\n 
        char c;
        printf("请输入一个字符:");
        fscanf(stdin,"%c",&c);//不会忽略空格,把空格当成字符读取了 
        printf("\n输入的字符是%c",c);
    
        printf("\n");
        return 0; 
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

    报告相同问题?

    问题事件

    • 系统已结题 6月6日
    • 已采纳回答 5月29日
    • 创建了问题 5月27日

    悬赏问题

    • ¥15 Linux操作系统中的,管道通信问题
    • ¥15 请问这张multisim图的原理是什么,这是一个交通灯,是课程要求,明天要进行解析,但是我们组没一个人会,所以急要,今天要
    • ¥15 ansible tower 卡住
    • ¥15 等间距平面螺旋天线方程式
    • ¥15 通过链接访问,显示514或不是私密连接
    • ¥100 系统自动弹窗,键盘一接上就会
    • ¥50 股票交易系统设计(sql语言)
    • ¥15 调制识别中这几个数据集的文献分别是什么?
    • ¥15 请大家看看报错原因,为啥会这样
    • ¥30 Cocos转UWP应用,支付调起后闪退