gpt4 book ai didi

C 检测文件末尾的最后一个新行

转载 作者:行者123 更新时间:2023-11-30 15:29:31 25 4
gpt4 key购买 nike

如果新行在前一行上有文本,我无法检测到文件末尾之前 after 的新行。

我可以检测到新的第 4 行

1  some text
2 some text
3
4

但不是此类文件的新第 3 行

1  some text
2 some text
3

(数字(1,2,3,4)是行,它们不在文件中)

这是我的示例代码:(编辑:代码已更新为更相关的变量)

#include <stdio.h>
#include <string.h>

main()
{
FILE *fp;
int ch;
int i = 0;
int line = 1;
int column = 0;
int tmp = 0;
fp = fopen("input.txt", "r");
if( fp != NULL ){
while((ch = fgetc(fp)) != EOF) {
switch(ch) {

case '\n':
if(i == 0) {
column = tmp;
}
if(tmp != column) {
printf("error\n");
}
tmp = 0;
line++;
i++;

break;
default:
tmp++;
break;
}
}
fclose(fp);
}
}

我不明白为什么第二种情况没有输出“错误”。

最佳答案

您的代码计算文件中第一个换行符之前的字符数,并将其存储为 n。随后每次读取换行符时,都会检查自上一个换行符以来读取的字符数是否与第一行的字符数 (n) 相同,如果不同,则打印错误消息(这似乎有点奇怪)。

您是否考虑过换行符在输入中的位置,以及“行”的定义到底是什么?我想你会发现四行文本中有三个换行符,三行文本中有两个换行符。也就是说,编辑器向您呈现的文件最后一行本身并不以换行符结尾。

关于C 检测文件末尾的最后一个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com