scanf的返回值由後面的參數決定緩存
scanf("%d%d", &a, &b);函數
若是a和b都被成功讀入,那麼scanf的返回值就是2指針
若是隻有a被成功讀入,返回值爲1進程
若是a和b都未被成功讀入,返回值爲0get
若是遇到錯誤或遇到end of file,返回值爲EOF。io
且返回值爲int型.後臺
驗證:file
sign=scanf("%d %d",&a,&b);
printf("%d %d\n",a,b);
printf("%d\n",sign);di
可是輸入「a X」的時候 輸出的sign爲0文件
何時輸出EOF? 在stdio.h中宏定義爲-1
按照說明,scanf函數只有在第一個參數爲NULL(空指針)的狀況下,纔可能返回EOF,不然,返回成功格式化並賦值的參數個數(>=0)。
End Of File,在電腦的術語縮寫一般爲 EOF,在做業系統決定資料源無更多的資料可讀取。
int c; while ((c = getchar()) != EOF) { putchar(c); } 可是,標準輸入與文件不同,沒法事先知道輸入的長度,必須手動輸入一個字符,表示到達EOF。 Linux中,在新的一行的開頭,按下Ctrl-D,就表明EOF(若是在一行的中間按下Ctrl-D,則表示輸出"標準輸入"的緩存區,因此這時必須按兩次Ctrl-D);Windows中,Ctrl-Z表示EOF。(順便提一句,Linux中按下Ctrl-Z,表示將該進程中斷,在後臺掛起,用fg命令能夠從新切回到前臺;按下Ctrl-C表示終止該進程。) 那麼,若是真的想輸入Ctrl-D怎麼辦?這時必須先按下Ctrl-V,而後就能夠輸入Ctrl-D,系統就不會認爲這是EOF信號。Ctrl-V表示按"字面含義"解讀下一個輸入,要是想按"字面含義"輸入Ctrl-V,連續輸入兩次就好了 EOF 意思就是 end of file!!!! 你 按按CTRL+D試試