看板 C_and_CPP 關於我們 聯絡資訊
不好意思~~小弟還是新手 在此請教一下各位大大 #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
SuperEel:倒數第三行的部分寫法我解決了...但是我發現printf印出 07/07 16:02
SuperEel:來的東西跟原來一樣少了第一個字元!!為什麼呢? 07/07 16:02
VictorTom:你用scanf讀入的字串長度有多長??也有4個字母?? 07/07 16:10
VictorTom:那你可能陣列空間不夠讓你放char string結束字元'\0' 07/07 16:11
th19883617:我剛試了一下 你把be字串多宣告一格試試看 07/07 16:13
th19883617:而且我不太懂要用getchar的原因 07/07 16:14
SuperEel:用getchar();可以避免scanf少讀一格 07/07 16:15
VictorTom:應該是為了吃掉\r\n中的\n吧....@_@" 07/07 16:16
SuperEel:be多宣告一格就可以了耶@@"但為什麼呢??? 07/07 16:17
th19883617:scanf不是會直接跳過\n嗎? 囧 用C++習慣了 忘記scanf.. 07/07 16:18
th19883617:雖然我確定cin.get()有這種問題我還記得.. 07/07 16:22
VictorTom:猜的, 因為在Windows下會有\r\n兩個char才湊成換行.... 07/07 16:24
VictorTom:抓數字無所謂, 抓%s或%c就有可能被這留下來的一個卡著. 07/07 16:25
SuperEel:所以要抓字元的話都要多給一個空間就是了~感謝大大 07/07 16:39
VictorTom:是要抓字串的話, 需要多給一個char放'\0'(字串結束) 07/07 17:00
VictorTom:如果一個一個字元抓(%c)抓剛好, 是可以不用多一個空間的 07/07 17:01