从键盘输入一行用空格分隔的整数,写入in.txt文件,写入完成后,再从in.txt文件中把数据读取出来,进行相加后,把把它们的和保存out.txt文件中,最后把out.txt内存储的结果读取输出到屏幕显示出来。
2条回答 默认 最新
技术专家团-小桥流水 2022-03-07 16:43关注从键盘读取数据有两种方法,一种是直接按照字符串读取,另一种是逐个数字读取。
运行结果如下:

两种方式代码运行结果一样。
(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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 2无用 2