需求:將兩個文本文件內容並排顯示於終端,文件 1 佔左側 30 列,中間 20 列空格分隔,文件 2 佔右側 30 列,每行固定 80 字符。行數不固定,以兩文件均讀取完畢為結束條件。
EOF 與 '\n':遇到換行或文件結束,該欄位後續列填空格,並消費換行符以便下一行繼續讀取。EOF。void Readline(FILE *fp1, FILE *fp2) {
int count;
char ch1 = fgetc(fp1), ch2 = fgetc(fp2);
while (1) {
for (count = 1; count <= 80; count++) {
if (count <= 30) { // 文件1區
if (ch1 == EOF || ch1 == '\n') putchar(' ');
else { putchar(ch1); ch1 = fgetc(fp1); }
} else if (count <= 50) { // 中間空格區
putchar(' ');
} else { // 文件2區
if (ch2 == EOF || ch2 == '\n') putchar(' ');
else { putchar(ch2); ch2 = fgetc(fp2); }
}
}
if (ch1 == '\n') ch1 = fgetc(fp1); // 消費換行符
if (ch2 == '\n') ch2 = fgetc(fp2);
putchar('\n');
if (ch1 == EOF && ch2 == EOF) break; // 雙EOF退出
}
}