c中scanf函式讀取換行符的問題

2021-08-07 15:04:30 字數 879 閱讀 2093

c中利用scanf()函式輸入字串,在按下回車後'\n'字元是被儲存在了快取區的,如果下一次繼續讀入字元這個換行符可能會產生影響,也可能不會產生影響。總結如下:

不會產生影響的情況:第二次輸入為「字串」(或數字);

scanf("%s",a);

scanf("%s",b);

printf("%s\n",a);

printf("%s\n",b);

如果輸入為:

hello

world

則輸出也為:

hello

world

scanf()函式更基於獲取單詞(get world)而不是獲取字串(get string);scanf()是以第乙個非空白字元開始讀入的,故第一次讀入字元所輸入的'\n',在第二個scanf()函式開始時被忽略掉了。(「%d」同理)

會產生影響的情況:第二次讀入的是『字元』:

scanf("%c",&a);

scanf("%c",&b);

printf("%c\n",a);

printf("%c\n",b);

如果輸入h,在按下回車後會直接輸出:

h

則直接就會輸出為h和兩個空行:

h

因為讀入的是字元,所以在第乙個字元讀完後的'\n', 在執行第二個scanf()時直接被讀取了,所以第二個printf()函式輸出為兩個'\n';

如果想消除'\n'的影響可以在中間加個getchar()函式;

C 中換行符

1 控制符endl cout endl是乙個特殊的c 符號,表示乙個重要的概念 重起一行。在輸出流中插入endl將導致螢幕游標移到下一行開頭。諸如endl等對於cout來說有特殊含義的特殊符號被稱作控制符。和cout一樣,endl也 是在標頭檔案iostream中定義的,且位於命名空間std中。2 ...

C 中幾種換行符

winform 中 textbox 的 multiline屬性設定為 true 敲入幾個字元和幾個回車,然後儲存到資料庫,再從資料庫中讀取出來賦值給textbox,換行符丟失。將讀取出的字串中的 n 替換為 r n 解決問題。1 textbox 中換行符為 r n 2 windows 中的換行符 即...

C 中插入換行符

要讓乙個windows form的textbox顯示多行文字就得把它的multiline屬性設定為true。這個大家都知道,可是當你要在 中為text屬性設定多行文字的時候可能會遇到點麻煩 你往往會想到直接付給乙個含有換行符 n 的字串給text屬性 atextbox.text first line...