手动创建两个文本文件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;
}