C Primer Plus,编程练习题 13-7,将行号相同的行打印到同一行上
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*****************************************
日期2013-5-3
编写一个打开两个文件的程序。可以使用命令行参数或者请求用户输入来获得文件名。
a. 让程序打印第一个文件的第一行、第二个文件的第一行、第一个文件的第二行、第二个文件的第二行、
以此类推,直到打印完行数较多的文件的最后一行。
b. 修改程序,把行号相同的行打印到同一行上。
*****************************************/
/*exercise b */
#define BUF 256
#define SIZE 40
int main()
{
FILE *fp1, *fp2;
char line1[BUF];
char line2[BUF];
char str1[SIZE]; //文件名
char str2[SIZE];
int i;
puts("enter filename1:");
gets(str1);
if((fp1 = fopen(str1, "r")) == NULL)
{
printf("enter %s [filename]", str1);
exit(1);
}
puts("enter filename2:");
gets(str2);
if((fp2 = fopen(str2, "r")) == NULL)
{
printf("enter %s [filename]", str2);
exit(1);
}
i = 1;
while(1)
{
if(fgets(line1, BUF, fp1) != NULL && line1[0] != '\n')
;
if(fgets(line2, BUF, fp2) != NULL && line2[0] != '\n')
{
printf("the %d line of\n", i);
fputs(strcat(line1, line2), stdout);
}
if(line2[0] = '\n' || line1[0] == '\n')
i++;
}
if(fclose(fp1) != 0)
printf("can't close the file1.\n");
if(fclose(fp2) != 0)
printf("can't close the file2.\n");
return 0;
}
打开file1.txt:
djfdl
jqejfldj
epore
hhalkhf
dlljl
ddd
aaaaa
打开file2.txt:
dadfd
dfdf
dfd
d
fd
fd
f
d
f
f
d
输出:第1行djfdl
dadfd 为什么会换行啊?应该输出djfdldadfd?谢谢