首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言實現兩個文件內容同屏側欄顯示

     編輯:關於C語言

C語言實現兩個文件內容同屏側欄顯示

需求:將兩個文本文件內容並排顯示於終端,文件 1 佔左側 30 列,中間 20 列空格分隔,文件 2 佔右側 30 列,每行固定 80 字符。行數不固定,以兩文件均讀取完畢為結束條件。

核心思路

  • 外層循環處理行,內層循環遍歷 1~80 列。
  • 根據列區間決定輸出來源:1~30 列來自文件 1,31~50 列輸出空格,51~80 列來自文件 2。
  • 讀取字符時需處理 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退出
    }
}

注意事項

  • 換行符必須在行結束後單獨消費,否則會導致下一行首字符丟失(被誤作換行處理)。
  • 程序僅支持 ASCII 字符;中文等多字節字符會導致對齊錯亂。
  • 可擴展:增加非空格字符計數、支持指定欄寬、輸出重定向到文件等。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved