手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下
text1:
begin
10 11 12
20 21 22
30 31 31
end
text2:
begin
15 16 17
25 26 27
35 36 37
end
text3:
begin
25 27 29
45 47 49
65 67 68
end
#include <stdio.h>
#include <string.h>
#define SIZE 1024
int main()
{
FILE *fp1 = fopen (\"text1.txt\",\"ab+\");//以读和写方式打开
FILE *fp2 = fopen (\"text2.txt\",\"ab+\");
if(fp1 == NULL)
{
perror(\"fopen fp1 \");
return -1;
}
if(fp2 == NULL)
{
perror(\"fopen fp2 \");
return -1;
}
FILE *fp3 = fopen (\"text3.txt\",\"ab+\");
if(fp3 == NULL)
{
perror(\"fopen fp3\");
return -1;
}
char buf1[SIZE] = {0};
char buf2[SIZE] = {0};
char buf3[SIZE] = {0};
int ret;
while(1)
{
ret = fread(buf1,sizeof(char),SIZE-1,fp1);
if (0 == ret) // 可能是文件结尾, 也可能是发生错误
{
if (feof(fp1) == 0) // 错误
{
printf (\"文件发生错误\\n\");
return -1;
}
break;
}
buf1[ret*sizeof(char)] = \'\\0\';
printf(\"%s\\n\",buf1);
printf(\"\\n\");
}
int ret2;
while(1)
{
ret2 = fread(buf2,sizeof(char),SIZE-1,fp2);
if (0 == ret2) // 可能是文件结尾, 也可能是发生错误
{
if (feof(fp2) == 0) // 错误
{
printf (\"文件发生错误\\n\");
return -1;
}
break;
}
buf2[ret2*sizeof(char)] = \'\\0\';
printf(\"%s\\n\",buf2);
}
strcpy(buf3,buf1);
int i = 0;
while(buf2[i] != \'\\0\')
{
if(buf2[i] >= \'0\' && buf2[i] <= \'9\')
{
buf3[i] = buf1[i] + buf2[i] - \'0\';
}
i++;
}
int len = strlen(buf1); //要传输的数据个数,不是字节长度
fwrite(buf3,sizeof(char),len,fp3);
printf(\"\\n\");
printf(\"%s\\n\",buf3);
printf(\"\\n\");
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



