#include<stdio.h>int main(){ int a1, a2; char c1, c2; scanf("%d%d", &a1, &a2); scanf("%c%c", &c1, &c2); printf("%d %d %c %c ...
這是我遇到的情況,圈起來的地方讀入時,會把前面箭頭處讀n時的回車讀入,導致讀取不正確,一般情況下,這種問題會出現在 d與 c搭配的情況下。 原因: 使用scanf從輸入流緩沖區中讀取數據,系統會把從鍵盤輸入的字符先放入緩沖隊列,直到鍵入回車鍵或者遇到文件結束符EOF時,再從輸入緩沖區逐個讀取字符 解決: ,用 c讀入多余的回車符 ,在 c前面加上一個空格 ...
2020-03-19 22:14 0 1282 推薦指數:
#include<stdio.h>int main(){ int a1, a2; char c1, c2; scanf("%d%d", &a1, &a2); scanf("%c%c", &c1, &c2); printf("%d %d %c %c ...
scanf輸入數據時遇到空格和遇到回車都會結束輸入 如果我們想要輸入一串字符如:Hello World! 打印出的結果只會是Hello,因為在Hello之后遇到了空格結束了輸入. 那么如何解決這個問題呢? 這是一種正則用法,更多的用法日后再說. ...
今天做TJU的OJ ,其中一道題是先讀入一個字符串,再讀入一個整數,循環往復,直到字符串是空,也就是說回車鍵結束循環。 但是cin對空格和回車都不敏感,都不影響繼續讀入數據,所以需要一種新的方式檢測回車。 方法一:利用getchar()函數 getchar()是stdio.h中 ...
當不支持gets時,getline又比較慢,可以使用scarf("%[^\n]s", str);來讀入以換行表示讀完的字符串,其中[^char]表示以char為結束。 ...
scanf和回車的關系: 先看一個我們經常使用的代碼: scanf 的各種格式中,%d、%c、%s三種最常用,通常都是以回車作為一次輸入的結束。由於對字符解析方式及字符特點不同(如數字中一般不會出現空格回車等特殊字符)不同,%d格式一般不會在連續輸入時,遇到問題。而%s ...
scanf() 讀取字符串時以空格為分隔,遇到空格就認為當前字符串結束了,所以無法讀取含有空格的字符串。 gets() 認為空格也是字符串的一部分,只有遇到回車鍵時才認為字符串輸入結束,所以,不管輸入了多少個空格,只要不按下回車鍵,對 gets() 來說就是一個完整的字符串 ...
所以要讀入含空格字符串,正確用法如下面: while(gets(a)!=NULL){..} 因為: EOF在scanf中被定義為-1, 對應ctrl+z。 而gets返回值:讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF ...
#include <stdio.h> int main() { char str[128]; scanf( "%[^\n]", str ); printf( "%s\n", str ); return 0; } scanf中的正則表達式 ...