-
s 和 &s 都表示位址並具有相等的值。
S 與 &s 不同,其中 s 是 char *,s 是 char (*10),後者是指向包含 10 個字元的行的指標。
在 scanf("%s",&s);在語句中,&s 有乙個隱式強制轉換,它等效於 scanf("%s",(char *)s);
-
它對結果沒有影響,這樣使用,當您按 f5 進行除錯時,結果不會閃爍。
-
scanf("設定字串格式"、位址表);
有三種型別的格式化字串:
1) 格式說明符,%c,%d...。
2. 空格:空格字元將導致 scanf() 函式在讀取操作期間從輸入中省略乙個或多個空格字元。
3. 非空格字元:非空格字元會導致 scanf() 函式在讀取時消除與非空格字元相同的字元。
所以,%c前面必須有乙個空格,否則系統會在變數中輸入另乙個值後讀取你輸入的回車符,導致無限迴圈。 當然,如果 scanf("%c", &varname) 是第乙個讀取語句,因此不需要空格。
-
scanf 無法輸入字串:
由於 scanf 函式在遇到空格、換行符或製表符時將立即結束讀取,因此鍵入 hello jane,最後只讀取 jane。
如果發現第乙個輸入的內容,scanf 不會全部讀取,只讀取第乙個空格之前的內容,即 John,後續的 Wilson 會暫時儲存在緩衝區中,當第二個 scanf 出現時,Wilson 會自動儲存在第二個 scanf 函式的變數中, 也就是說,name2=wilson。
因此,在列印 name2 值的末尾,它顯示 wilson。 當我們輸入 C Enter 時,scanf 從緩衝區中獲取 C 並將其交給 CH,但返回值仍在緩衝區中,並沒有將其帶走,當我們輸入字串時,它被交給 CH1,因為返回值也是乙個字元。
如何使scanf在輸入後不換行
輸入字元時:當 scanf 中沒有空格時:不要有空格,也不要換行,因為空格和換行符是字元。
因此,只需輸入字元,當 scanf 中有空格時:您可以有乙個沒有換行符的空格,當您輸入數字(浮點數)時:您可以換行或空格,因為它們不是數字。
當 scanf 中沒有逗號時:沒有逗號,否則第二個數字將變為 0,當 scanf: 中有逗號時:可以有逗號。
-
s 和 &s 都表示位址並具有相等的值。
S 與 &s 不同,其中 s 是 char *,s 是 char (*10),後者是指向包含 10 個字元的行的指標。
在 scanf("%s",&s);在語句中,&s 有乙個隱式強制轉換,它等效於 scanf("%s",(char *)s);
-
不。 Scanf() 是 C 語言中的輸入函式。 表單: int scanf(const char * restrict format,..
字串的格式包含 s 中的 format 指令,用於讀取字元序列,後跟乙個 null 位元組,並遇到空格字元(t、空格等)以完成讀取。
Scanf 在輸入字串時不會收到空格,按 Enter 和 Tab 鍵,則認為輸入結束。 scanf 函式直接從輸入緩衝區獲取資料,而不是從鍵盤(即終端)緩衝區獲取資料。 如果讀取以 Carriage return() 結尾,它將一起被讀入輸入流緩衝區,因此在第一次接受輸入後,該字元將被留下。
使用字串就是使用它的第乙個位址(有時和長度,實際上,擁有第乙個位址就足夠了),無論字串有多長。 最明顯的例子是,當乙個(常量)字串作為引數及其第乙個位址傳遞時。 所以你的比較只是位址的比較。