晴空的code 2022-05-27 23:01 采纳率: 75%
浏览 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 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件