#include
#include
int main() {
FILE* fp = fopen("test.txt", "r"); // 文本模式,自動處理 \r\n → \n
if (!fp) return 1;
char buf[1024];
while (fgets(buf, sizeof(buf), fp)) {
// 1. 移除末尾換行符 (若存在)
size_t len = strlen(buf);
if (len > 0 && buf[len-1] == '\n') buf[len-1] = '\0';
// 2. 若來自 Windows 文件,可能再殘留 \r
if (len > 1 && buf[len-2] == '\r') buf[len-2] = '\0';
printf("%s\n", buf); // 統一由這裡控制換行
}
fclose(fp);
return 0;
}
int ch;
while ((ch = fgetc(fp)) != EOF) {
if (ch != '\n' && ch != '\r') putchar(ch); // 過濾所有換行
// 或按需保留
}
原最佳回答「怎麼會有換行符,你加了\n?」方向正確但未給出具體檢查點與標準處理模板。上文提供 4 大原因、標準模板、逐字符替代方案。