關於行末換行符的讀入問題

2021-09-30 21:06:14 字數 1225 閱讀 5773

在做洛谷p1141 01迷宮這道題的時候,

輸入是這樣的:

2 201

101 1

2 2我原來是這麼讀入的:

scanf("%d %d", &n, &m);

getchar();

for (int i = 1; i <= n; i++)

所蘇皇說應該這麼讀入:

scanf("%d %d", &n, &m);

for (int i = 1; i <= n; i++)

scanf在讀入%s時會忽略空格和換行符。

如果是這樣的資料輸入:

abcdef

as dsf qwq as

第一行是沒有空格的字串,第二行是一整行讀入:

gets_s讀入:

scanf("%s", s); //讀入abcdef

gets_s(str); //讀入abcdef後的換行符等

gets_s(str); //讀入as dsf qwq as到str中

getline讀入

cin>>s;

getline(cin,str);

getline(cin,str);

如果是讀入是以下格式讀入字元矩陣裡

a bd e

如果不用cin的話可以這樣讀入:

char a[maxn][maxn][2];

for (int i = 1; i <= 2; i++)

for (int j = 1; j <= 2; j++)

scanf("%s", a[i][j]); //就是將字元看成乙個字串讀入

輸出:

for (int i = 1; i <= 2; i++)

for (int j = 1; j <= 2; j++)

printf("%c", a[i][j][0]);

或者

for (int i = 1; i <= 2; i++)

for (int j = 1; j <= 2; j++)

printf("%s", a[i][j]);

總結:不要利用getchar()和%c讀取單個字元!

換行符問題

今天,我總算搞清楚 回車 carriage return 和 換行 line feed 這兩個概念的來歷和區別了。在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個...

c 關於換行符

windows r n linux n mac r 不同的os有不同的換行符 os 換行符漢字碼 unix lfjis,euc,shiftjis windows cr lf shiftjis macintosh crshiftjis 下面列出了各個系統之間的變換關係 unix windows per...

scanf()避免讀入上次輸入的換行符

c語言的scanf 函式在接收輸入單個字元時會把上一次輸入的回車符號當做這次輸入的字元,造成無法正確的輸入字元資料。這恐怕是初學c的童鞋門遇到的最頭疼的問題了。今天給大家提供四種解決方法供借鑑。1 在scanf 中使用 n 遮蔽回車符號。scanf d n n 使用 n 過濾回車 scanf c c...