fgetc()不返回'\ n'字符

时间:2019-05-25 16:51:24

标签: c

我正在尝试使用FILE *类型读取文本文件。除了使用fgetc()函数外,其他一切都很好。

实际上,我想检查文件中有多少个'\ n'字符,但是即使我正在读取的文件中有一个字符,该函数也不会返回该值。有人遇到过这种情况吗?

我正在使用的代码如下:

char ch;
while (ch!=EOF) {
    ch = (char) fgetc(gl_file);
    if(ch=='\n') newline_counter++;
}

newline_counter仍为0。

2 个答案:

答案 0 :(得分:3)

在检查ch的值之前,不要初始化ch,并且charfgetc,而int返回int ch; while ((ch = fgetc(fp)) != EOF) { if(ch == '\n') ++newline_counter; } 。 重写为类似的内容:

textLen

答案 1 :(得分:-2)

无需强制转换fgetc的返回值。使用getc而不是fgetc

  

getc()fgetc()等效,不同之处在于它可以被实现为对 stream 进行多次评估的宏。

char ch = getc(fp);
do{
   if (ch == '\n') ++newline_counter;
} while ((ch = getc(fp)) != EOF);

或者您可以使用getline()

  

getline() 读取整行。

char *ch = NULL;
size_t len = 0;
while (getline(&ch, &len, file) != -1)
    ++line;
  

如果在调用之前将*ch设置为NULL,并且将*len设置为0,则getline()将分配用于存储行的缓冲区。 / p>