[問題] 如何限制使用者輸入字串只能輸入5個字元

看板C_and_CPP作者 (誠實面對自己吧!)時間11年前 (2013/03/31 18:33), 編輯推噓2(2015)
留言17則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC2008 問題(Question): 想要限制使用者輸入字串 字串長度最多只有5個字元 錯誤結果(Wrong Output): 若輸入長度超過限制會出錯 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdlib.h> #include <stdio.h> char *Name(void){ char *temp= (char*)malloc(sizeof(char)*5); printf("請問您的大名是(請勿輸入超過5個英文字):\n"); scanf("%5s",temp); rewind(stdin); return temp; } 補充說明(Supplement): 現在有想到一個做法 就是用一個迴圈 讓使用者一個字元一個字元輸入 或是開一個很大的字元陣列 不管使用者輸入多少 只傳回第0~第4 但跟朋友討論 這樣不太人性化 不知道有沒有其他的做法 -- -- ˙ ˙ ◥ ▲ 上吧,藍胖!! \' (OwQ ) ) ) ﹀ \ \ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.30.151

03/31 18:46, , 1F
先讀近來判斷長度是否超過五 超過就重新輸入
03/31 18:46, 1F

03/31 18:55, , 2F
scanf("%5s",temp);
03/31 18:55, 2F

03/31 18:57, , 3F
感謝 用%5s就解決了 XDD
03/31 18:57, 3F

03/31 19:01, , 4F
抱歉 剛馬上試了一下 又出現新的問題@@
03/31 19:01, 4F

03/31 19:02, , 5F
多輸入的部分不知道怎麼清掉他@@
03/31 19:02, 5F

03/31 19:04, , 6F
我找到答案了 加一行rewind(stdin);清掉多餘的部分就好
03/31 19:04, 6F
※ 編輯: kattte 來自: 111.242.30.151 (03/31 19:05)

03/31 21:09, , 7F
我都用while( ( ch = getchar() ) != EOF && ch != '\n' ) ;
03/31 21:09, 7F

03/31 21:09, , 8F
來清掉多餘的
03/31 21:09, 8F

03/31 21:14, , 9F
用fgets(temp, 5, stdin); ?
03/31 21:14, 9F

03/31 22:08, , 10F
感謝樓上兩位 我試試看
03/31 22:08, 10F

03/31 22:08, , 11F
fgets()似乎不會把多的清掉~
03/31 22:08, 11F

03/31 22:22, , 12F
我有另外加一個rewind(stdin);清掉多餘的部分
03/31 22:22, 12F

03/31 22:38, , 13F
沒什麼不人性的 警告訊息寫清楚就好了
03/31 22:38, 13F

03/31 22:38, , 14F
"Warning: only first 5 letters will be taken"
03/31 22:38, 14F

03/31 22:39, , 15F
偵測到長度超過五就再警告他一次 他沒問題就幫他剁掉
03/31 22:39, 15F

03/31 22:43, , 16F
是這樣沒錯拉 XDD
03/31 22:43, 16F

03/31 22:44, , 17F
人性化就是 隨便你輸入 多餘的 格式不符的 自動把你改掉!!
03/31 22:44, 17F
文章代碼(AID): #1HM13ZP7 (C_and_CPP)