作者SuperEel (SuperEel)
看板C_and_CPP
標題[問題] 讀字元的問題!!
時間Tue Jul 7 15:52:17 2009
不好意思~~小弟還是新手
在此請教一下各位大大
#include<stdio.h>
#include<stdlib.h>
int main(void){
char motion[4],be[4];
printf("請輸入運作模式:");
scanf("%s",&motion);
getchar();
printf("請輸入移動模式:");
scanf("%s",&be);
printf("%c%c%c%c %c%c%c%c",motion[0],motion[1],motion[2],motion[3],be[0],be[1],be[2],be[3]);
system("pause");
return 0;
}
為啥我程式這樣打
第一個scanf所讀到的第一個字元會不見呢?
還有........
倒數第三行的部分
可以用比較簡單的方式寫嗎???
感覺我這樣寫好像很麻煩><"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.76.143
1F:→ SuperEel:倒數第三行的部分寫法我解決了...但是我發現printf印出 07/07 16:02
2F:→ SuperEel:來的東西跟原來一樣少了第一個字元!!為什麼呢? 07/07 16:02
3F:→ VictorTom:你用scanf讀入的字串長度有多長??也有4個字母?? 07/07 16:10
4F:→ VictorTom:那你可能陣列空間不夠讓你放char string結束字元'\0' 07/07 16:11
5F:推 th19883617:我剛試了一下 你把be字串多宣告一格試試看 07/07 16:13
6F:→ th19883617:而且我不太懂要用getchar的原因 07/07 16:14
7F:→ SuperEel:用getchar();可以避免scanf少讀一格 07/07 16:15
8F:推 VictorTom:應該是為了吃掉\r\n中的\n吧....@_@" 07/07 16:16
9F:→ SuperEel:be多宣告一格就可以了耶@@"但為什麼呢??? 07/07 16:17
10F:→ th19883617:scanf不是會直接跳過\n嗎? 囧 用C++習慣了 忘記scanf.. 07/07 16:18
11F:→ th19883617:雖然我確定cin.get()有這種問題我還記得.. 07/07 16:22
12F:推 VictorTom:猜的, 因為在Windows下會有\r\n兩個char才湊成換行.... 07/07 16:24
13F:→ VictorTom:抓數字無所謂, 抓%s或%c就有可能被這留下來的一個卡著. 07/07 16:25
14F:→ SuperEel:所以要抓字元的話都要多給一個空間就是了~感謝大大 07/07 16:39
15F:推 VictorTom:是要抓字串的話, 需要多給一個char放'\0'(字串結束) 07/07 17:00
16F:→ VictorTom:如果一個一個字元抓(%c)抓剛好, 是可以不用多一個空間的 07/07 17:01