ACM中回車的問題
大部分是在網上摘抄的,只有一點點是自己寫的,權當是mark一下。 1.回車的問題 比較四種讀入:字串輸入 getchar(), scanf(“%c”); scanf(“%s”), gets()區別
①&②: 其中getchar() 和 scanf(“%c”)的功能是一樣的。 這兩個函式讀入的是輸入流中當前位置的字元,比如: scanf(“%d”,&n); c = getchar(); 假設輸入 67/ (假設“/”代表回車),則第一個scanf讀入一個整數67後,當前輸入流的位置是67之後,即指向回車符,所以第二個getchar()讀入的就是一個回車符了,即 c = ‘\n’。
③ 同樣,gets()也是從當前位置讀入一行字串。 比如: scanf(“%d”,&n); gets(str); 此時讀入字元陣列中的字串就是“\n” 了 所以通常在用scanf讀入一個非字串的型別之後,如果要讀入字元,或字元陣列,都用一個額外的getchar()把回車符讀掉,若後面跟的不止一個回車符,可能還有多餘的空格的話,就用gets()讀掉。
④ 和以上不同的是,scanf(“%s”) 讀入的時候是會忽略掉空格,回車和製表符的。並且以空格,回車和製表符作為字串結束的標誌。 也就是說,scanf("%s")其實是比較特殊的,它一定會等到所有空白符結束,一直等到它要等的字串出現,它才讀取,在字串出現之前,出現的所有空白符都會忽略掉。
經常會有這樣的題,輸入第一行是一個整數,接下來每行的第一個是一個字元,用來表示某種操作,後面再跟一些資料,比如: 4 A 100 2 B 23 A 23 89 B 34 像這種輸入就需要小心,讀入字元時不要讀成回車符。 為了防止意外,我一般是這樣處理這類輸入的: char model[2]; Scanf(“%d”,&n); for(…,…,…) { scanf(“%s”,model); if(model[0] == ‘A’){} else{} }
無論用cin還是scanf ,讀入字元之後若要再繼續讀入,應消去換行符,可使用scanf("%*c")或者getchar().
相關文章
- ACM中的輸入問題ACM
- ACM 6174問題ACM
- ACM 眾數問題ACM
- ACM 揹包問題ACM
- ACM 過河問題ACM
- ACM 會場安排問題ACM
- ACM 荷蘭國旗問題ACM
- ACM 兄弟郊遊問題ACM
- 遮蔽ASP.NET按鈕自動回車後提交的問題ASP.NET
- ACM 括號配對問題ACM
- 怎樣讓word不顯示回車符號 如何去掉word中的回車符符號
- ACM 另一種階乘問題ACM
- DOS,UNIX中的回車換行區別
- 關於html編輯器的回車換行問題解決方案 (轉)HTML
- js頁面當中沒有寫回車事件,但是有回車效果JS事件
- angularjs中響應回車事件AngularJS事件
- 批次去掉Word/WPS中的回車符符號符號
- 看到說面試阿里的問題,回憶回憶呀面試阿里
- Spring的事物回滾問題Spring
- 面試題:火車運煤問題面試題
- 瀏覽器中輸入 URL 回車後瀏覽器
- 瀏覽器中輸入 URL 回車後...瀏覽器
- 斜率優化(凸包優化)DP問題acm優化ACM
- acm演算法之三大揹包問題ACM演算法
- 關於對話方塊介面上按回車和ESC鍵退出問題的處理 (轉)
- acm訓練題ACM
- ultraedit中將某字元替換為回車符字元
- 回車響應事件事件
- OSSPostObject未發生回撥的問題排查Object
- BFS/acm習題集ACM
- 關於while(cin)回車結束 和 while(cin)與cin.get()結合時發現的問題While
- oracle中去掉文字中的換行符、回車符、製表符Oracle
- vi 中將 Windows 文字檔案中的 ^M (回車換行)全部替換掉Windows
- 2道面試題:輸入URL按回車&HTTP2面試題HTTP
- 車路協同若干痛點問題的思考
- Redis中的問題Redis
- javascript自定義回車事件JavaScript事件
- oracle 回車、換行符Oracle