有關scanf函式小知識

2021-07-08 08:56:26 字數 658 閱讀 4528



1. scanf 函式是有返回值的,它的返回值可以分成三種情況

1) 正整數,表示正確輸入引數的個數。例如執行 scanf("%d %d", &a, &b);

如果使用者輸入"3 4",可以正確輸入,返回2(正確輸入了兩個變數);

如果使用者輸入"3,4",可以正確輸入a,無法輸入b,返回1(正確輸入了乙個變數)。

2) 0,表示使用者的輸入不匹配,無法正確輸入任何值。如上例,使用者如果輸入",3 4",返回0。

3) eof,這是在stdio.h裡面定義的常量(通常值為-1),表示輸入流已經結束。在windows下,使用者按下ctrl+z(會看到乙個^z字元)再按下回車(可能需要重複2次),就表示輸入結束;linux/unix下使用ctrl+d表示輸入結束。

所以可以使用下面的**來處理輸入:

while (scanf("%s %c %c", str, &oldchar, &newchar) == 3) /* 或!= eof , 但前者更好 */

2. 為什麼前面 scanf 的格式串裡面,%s和%c中間需要空格呢?

那是因為如果沒空格的話……oldchar輸入的就是空格了= =.

3. 順便說一下,printf的返回值是輸出的字元數,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5。

有關棧的小知識

include int main 引用於 c專家程式設計 在我的ubuntu14.04 64位作業系統中輸出 the stack top is near 0x7ffc5643981c 符合64位虛擬記憶體管理 2.linux棧的大小 首先用ulimit s可以檢視棧大小 輸出 8192。單位是k。也...

C語言裡scanf函式的有關問題

今天在知道上看到有人問乙個c語言用scanf輸入的問題,說執行出錯,源 如下 includeint main includeint main 再次編譯執行後,還是不行,直接就跳過輸入到了 press any key to continue了 原因如下 1.scanf 函式是乙個格式化輸入函式,像sc...

有關於BGP的小知識!

背景資訊 bgp協議本身不發現路由,因此需要將其他路由 如igp路由等 引入到bgp路由表中,從而將這些路由在as之內和as之間傳播。1 配置bgp引入路由bgp協議支援通過以下兩種方式引入路由 import方式 按協議型別,將rip路由 ospf路由 isis路由等協議的路由引入到bgp路由表中。...