簡體   English   中英

如果fgetc(fileName)在IF語句中,它會拉出一個字符嗎?

[英]Will fgetc(fileName) pull a character if it is within an IF statment?

這是我的if語句:

if (fgetc(fileName) != EOF) {
}

我知道如果不在if語句中運行fgetc() ,它將刪除一個字符,並且我必須執行ungetc來返回它。 fgetcif語句中時,會發生這種情況嗎?

是的,它將,並且由於您沒有存儲所讀取的字節,因此丟失了它。 使用此代替:

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.

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