簡體   English   中英

C 中 scanf 的返回值 EOF

[英]Return value EOF of scanf in C

C語言中的scanf,我對返回值有點困惑。

在說明中,它說:

  1. 如果在第一次成功轉換或匹配失敗發生之前到達輸入末尾,則返回 EOF。
  2. 如果發生讀取錯誤,也會返回 EOF,在這種情況下,設置了流的錯誤指示符。

首先,我不確定第一次成功轉換之前發生匹配失敗之前是否到達輸入末尾是什么意思。 這怎么可能?

其次,我不確定讀取錯誤和匹配失敗之間的區別?

首先,我不確定在第一次成功轉換之前或在發生匹配失敗之前是否到達輸入末尾是什么意思。 這怎么可能?

想象一下,您正試圖從文件中讀取一個字符,而您正處於文件的末尾。 在任何成功的轉換或匹配嘗試發生之前,將到達輸入的末尾。

其次,我不確定讀取錯誤和匹配失敗之間的區別?

讀取錯誤意味着您無法從FILE讀取數據。 的匹配失敗意味着你能讀取數據,但它並不匹配預期(例如,讀a用於%d 。)

函數scanf()返回成功讀取和轉換的字段數。 但是,如果我輸入 (Windows) Ctrl-Z作為輸入,則表示EOF 在 Linux 中,我認為可能是Ctrl-D 因此,如果您沒有輸入有意義的值, scanf()以一種或另一種方式指示失敗。

通常,您測試所需的輸入數量,這也將涵蓋EOF情況。

if (1 != scanf("%d", &i))
    printf ("No valid input\n");

暫無
暫無

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

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