发布网友
共4个回答
热心网友
热心网友
程序如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp1,*fp2;
int n1,n2,sum;
fp1=fopen("in.txt","r"); /*假设读入文件是in.txt,写出文件为out.txt */
fp2=fopen("out.txt","w");
if(fp1==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fp2==NULL)
{
printf("cannot open file\n");
exit(0);
}
while(!feof(fp1)) /*判断是否到文件结尾*/
{
fscanf(fp1,"%d %d",&n1,&n2); /*读取一行*/
sum=n1+n2;
fprintf(fp2,"%d\n",sum); /*写出一行*/
}
fclose(fp1);
fclose(fp2);
}
热心网友
从专业的角度来说,需要构造一个文法,然后读取,不过感觉对初学者太难了。
简单描述一下思路:
第一步分词,第二步语法分析,第三步存储。
分词:
从文件读入一个字符,如果不是空格回车等空白字符,就再读入一个,直到读满一个单词。
语法:
起始时为状态0。
状态0:如果读入的是学号(例如字母或数字开头的单词)跳至状态1;如果读入的是其他跳至状态2;如果文件结束正常结束。
状态1:如果读入的是姓名(例如全部是中文的单词),存储并跳至状态0;其他情况报错。
状态2:如果读入的是学号,存储并跳至状态0;其他情况报错。
存储,已经说过是链表就不再多说了。单词复制可以看看strp和free的配合。追问你想多了
给我代码
热心网友
#include <stdio.h>
int main(){
FILE *pf1,*pf2;
int a,b,c;
pf1=fopen("c:\\in.txt","r");
pf2=fopen("c:\\out.txt","w");
if(!pf1 || !pf2){
printf("Error!\n");
return 1;
}
fscanf(pf1,"%d%d",&a,&b);
while(!feof(pf1)){
c=a+b;
fprintf(pf2,"%d\n",c);
fscanf(pf1,"%d%d",&a,&b);
}
fclose(pf1);
fclose(pf2);
return 0;
}