台灣最大程式設計社群網站
線上人數
1120
 
會員總數:245243
討論主題:189102
歡迎您免費加入會員
討論區列表 >> C/C++ >> 請問一下scanf的問題~
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問一下scanf的問題~
價值 : 10 QP  點閱數:1681 回應數:5

樓主

蠻牛
門外漢
0 4
36 4
發送站內信

請問一下為啥我scanf傳回值如果是0的話就不會再執行scanf,我下面的程試~
若輸入是字元就會變會無窮迴圈,請問一下要怎麼解決丫~
謝謝大家~
do{
printf("Please select number from small to big permutation1 input'1'or big to small permutation1 input'2':");
scanf("%d",&SelSort);
if(!(SelSort==1 || SelSort==2))
printf("Input wrong please again.\n");
}while(!(SelSort==1 || SelSort==2));

搜尋相關Tags的文章: [ scanf ] ,
本篇文章發表於2005-05-20 13:44
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
你應該輸入都是接char或字串
本篇文章回覆於2005-05-20 13:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

蠻牛
檢舉此回應
不好意思~我還是不太懂妳的意思也~~
本篇文章回覆於2005-05-20 14:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

蠻牛
檢舉此回應
不好意思~我還是不太懂妳的意思也~~
本篇文章回覆於2005-05-20 14:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

小白
捐贈 VP 給 Marcus 檢舉此回應
1. 由於你不知道輸入會是字元、數字還是字串,所以需要用到字串去讀取輸入。因為字元、數字都是字串的一種。用字串讀入就可以確定沒有問題。
以下這段 code 可以宣告一個字串 x ,它可以裝下 1000 個字元。
char x[1000];


2. 讀入字串用 gets() 函式,把整行輸入都讀到變數內
gets(x);


3. 同樣使用 while 判斷。但是注意判別字串是否為另一字串須用函數 strcmp 。
int a=strcmp("abc","def");  //傳回一個負整數,因為在做字串比較後,發現 a 是比 d 小。
int b=strcmp("def","abc");  //傳回一個正整數,因為在做字串比較後,發現 d 是比 a 大。
int c=strcmp("abc","abc");  //傳回零,因為在做字串比較後,兩個字串相等。



解法:
#include <stdio.h>
#include <string.h>
int main() {
   char x[1000];
   while(1) {
      printf("Sort in ascending order (1) or in decending order(2): ");
      gets(x);
      if(!strcmp(x,"1")||!strcmp(x,"2")) break;
      else printf("Invalid input - Please type again.\n");
   }
   return 0;
}



   
           
本篇文章回覆於2005-05-22 00:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

蠻牛
檢舉此回應
謝謝你囉~
那再請問一下,如果我要判斷是數字或字元那要怎麼改丫~~
我的程試原本是:

printf("Please input ten numbers:\n");
for (i=1;i<11;i++)
{
printf("Number(%d):",i);
ch=scanf("%d",&data[i]);
}

這樣做我只要輸入一個字元就也會發生錯誤,請問一下要怎麼做丫~
本篇文章回覆於2005-05-23 10:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.