函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應位址的變數中。
其呼叫格式為: scanf(「《格式化字串》」,《位址表》);
scanf()函式返回成功賦值的資料項數,出錯時則返回eof。
格式字串包括三種字元「格式化符「,如」%d,%c,%s」等;」空白符」,如空格,製表符,新行符;」非空白符」,如」,」等。
空白符:空白字元會使scanf函式在讀操作中略去輸入中的乙個或多個空白字元。
非空白符:乙個非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。
如:scanf(「%d%d」,&a,&b);
或scanf(「%d %d」,&a,&b); 輸入時: 1 2
scanf(「%d,%d」,&a,&b); 輸入時:1,2
關鍵:在用格式化符%c時,空格,轉義符均為有效字元;
例:scanf(「%c%c%c」,&a,&b,&c);
輸入:a□b□c
則:a=』a』,b=』□』,c=』b』
實際遇到的問題:
int main()
4
gdb除錯:
6 scanf("%c",&a);
(gdb) n
a7 scanf("%c",&b);
(gdb) n
8 printf("%c %c",a,b);
(gdb) p a
$1 = 97 'a'
(gdb) p b
$2 = 10 '\n'
當輸入完a的值後,回車也被b接受,在實際執行輸入完a就直接列印a結束。
優化:
int main()
4
在scanf前加上getchar();
6 scanf("%c",&a);
(gdb) n
a7 getchar();
(gdb) n
8 scanf("%c",&b);
(gdb)
b9 printf("%c %c",a,b);
(gdb) n
10 return 0;
(gdb) p a
$1 = 97 'a'
(gdb) p b
$2 = 98 'b'
fflush(stdin)函式:對於上面情況處理無效,還沒能搞懂,此處保留。 C語言 訊號處理機制
c語言中訊號標示一種時間,它可能非同步地發生,也就是並不與城市執行過程中的任何事件保持同步,如果程式中未設定該訊號的處理函式,則選擇預設方式 大部分為終止程式執行。訊號標頭檔案 同樣可以顯示引發乙個訊號 int raise int sig 指定希望採取的措施 void signal int sig,...
c語言異常處理機制
異常處理機制 setjmp 函式與longjmp 函式 c標準庫提供兩個特殊的函式 setjmp 及 longjmp 這兩個函式是結構化異常的基礎,正是利用這兩個函式的特性來實現異常。所以,異常的處理過程可以描述為這樣 首先設定乙個跳轉點 setjmp 函式可以實現這一功能 然後在其後的 中任意地方...
golang panic及處理機制
目錄 panic會將這個異常不斷向上丟擲,直到有地方處理它,如果有處理,則不會再向上丟擲。倘若沒有處理,那麼最終會quenu導致main掛掉.golang雖然沒有try catch機制,卻有一種類似的recover機制,後續demo我們可以觀測到它的用法和作用 func main go test1 ...