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

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

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

运行结果如下:

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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632