[英]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
ch
是char
。 改成類似:
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.