m0_61231960 2022-03-07 16:39 采纳率: 100%
浏览 284
已结题

请问这个问题用c语言怎么写

从键盘输入一行用空格分隔的整数,写入in.txt文件,写入完成后,再从in.txt文件中把数据读取出来,进行相加后,把把它们的和保存out.txt文件中,最后把out.txt内存储的结果读取输出到屏幕显示出来。

  • 写回答

2条回答 默认 最新

  • 关注

    从键盘读取数据有两种方法,一种是直接按照字符串读取,另一种是逐个数字读取。

    运行结果如下:

    img

    两种方式代码运行结果一样。

    (1)从键盘读取时以字符串方式读取,代码如下:

    #include <stdio.h>
    int main()
    {
        char buf[200];
        int nmb,i,sum=0;
        FILE* fp=0;
        //从键盘读取数据,数据用空格分隔,按回车键结束
        gets(buf);
        //写入文件
        fp = fopen("in.txt","w");
        fprintf(fp,"%s",buf);
        fclose(fp);
        printf("写入成功\n");
        //从文件中读取
        fp = fopen("in.txt","r");
        if(fp==0)
        {
            printf("a.txt打开失败\n");
            return 0;
        }
        while(!feof(fp))
        {
            if(fscanf(fp,"%d",&nmb))
            {
                sum += nmb;
            }
        }
        fclose(fp);
        //将和写入文件
        fp = fopen("out.txt","w");
        fprintf(fp,"%d",sum);
        fclose(fp);
        printf("写入成功,和=%d\n",sum);
        return 0;
    }
    
    

    (2)单个数字逐个读取,代码如下:

    #include <stdio.h>
    int main()
    {
        char ch;
        int nmb,i,sum=0,flag = 0;
        FILE* fp=0;
    
        //写入文件
        fp = fopen("in.txt","w");
        while(scanf("%d",&nmb)) //读取数据,遇到回车结束
        {
            if(flag==0)
            {
                fprintf(fp,"%d",nmb);
                flag = 1;
            }
            else
                fprintf(fp," %d",nmb);//在每一个数字前写入一个空格
            ch = getchar();
            if(ch=='\n')
                break;
        }
        
        fclose(fp);
        printf("写入成功\n");
        //从文件中读取
        fp = fopen("in.txt","r");
        if(fp==0)
        {
            printf("a.txt打开失败\n");
            return 0;
        }
        while(!feof(fp))
        {
            if(fscanf(fp,"%d",&nmb))
            {
                sum += nmb;
            }
        }
        fclose(fp);
        //将和写入文件
        fp = fopen("out.txt","w");
        fprintf(fp,"%d",sum);
        fclose(fp);
        printf("写入成功,和=%d\n",sum);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 创建了问题 3月7日