[英]Will fgetc(fileName) pull a character if it is within an IF statment?
這是我的if語句:
if (fgetc(fileName) != EOF) {
}
我知道如果不在if
語句中運行fgetc()
,它將刪除一個字符,並且我必須執行ungetc
來返回它。 當fgetc
在if
語句中時,會發生這種情況嗎?
是的,它將,並且由於您沒有存儲所讀取的字節,因此丟失了它。 使用此代替:
int c;
if ((c = fgetc(fp)) != EOF) {
ungetc(c, fp); /* put the byte back into the input stream */
/* not at end of file, keep reading */
...
} else {
/* at end of file: no byte was read, nothing to put back */
}
還要注意,您應該將FILE*
傳遞給fgetc
,而不是文件名,並且ungetc
不會return
字符,而是將其放回輸入流,以便下一個fgetc()
或fgets()
可以讀取它。從流中再次讀取之前,可能一次不能對一個字節進行ungetc
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.