晴空的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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀