簡體   English   中英

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

[英]fgetc() does not return '\n' characters

我正在嘗試使用FILE *類型讀取文本文件。 除了使用fgetc()函數外,其他一切都很好。

實際上,我想檢查文件中有多少個'\\ n'字符,但是即使我正在讀取的文件中有一個字符,該函數也不會返回該值。 有人遇到過這種情況嗎?

我正在使用的代碼如下:

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

newline_counter保持為0。

在檢查ch的值之前,不要初始化ch ,而fgetc返回int chchar 改成類似:

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

無需fgetc返回值。 使用getc而不是fgetc

getc()fgetc()等效,除了它可以實現為對流進行多次評估的宏。

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

或者您可以使用getline()

getline()stream讀取整行。

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

如果在調用之前將*ch設置為NULL並將*len設置為0 ,則getline()將分配用於存儲行的緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM