Re: [問題] scanf的問題

看板C_and_CPP作者 (藍影)時間15年前 (2010/05/09 15:07), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串5/11 (看更多)
我想你要的是:讓使用者決定資料輸入完沒.. 比較簡單的方式是類似以下方法: int sum = 0; int cnt = 0; printf("please input a integer:(-1 to exit.)"); while(scanf("%d", &data)){ if(data == -1) break; sum = sum + data; cnt++; printf("please input a integer:(-1 to exit.)"); } printf("input times:%d\n", cnt); printf("sum : %d\n", sum); 一般加上輸入錯誤機制的話可能會長得像這樣 int temp = 0; int ret = 0; int sum = 0; int cnt = 0; while(true){ printf("please input a integer(-1 to exit):"); ret = scanf("%d",&temp); if(ret==0) { printf("輸入錯誤!!請重新輸入\n"); } else if(temp!=-1){ cnt++; sum+=temp; } else{ printf("輸入結束!!\n"); break; } } printf("輸入次數:%d\n", cnt); printf("輸入數字總合:%d\n", sum); // ======================================= code 有點醜.. 但可參考.. ※ 引述《tropical72 (藍影)》之銘言: : scnaf 回傳值是 "引數成功 match 之數目" : ex: : int a1, a2, a3; : int ret = scanf("%d%d%d", &a1, &a2, &a3); : 如果使用者輸入 10 22 12 : 回傳值 ret = 3 : 如果值用者輸入 10 22 ss : 最後一個引數沒有 match 到 : 回傳值 ret = 2 : 以您的例子 while(scanf("%d", &num) {....} : 事實上可以看成 : while(scanf("%d", &nun)!=0) {....} : 或是 : while(scanf("%d", &num)==1) {....} : 是一樣的意思, : 只要輸入不是正常的整數, 這個迴圈就會停下來 : 參考.. : ※ 引述《gsrr (下象棋)》之銘言: : : while (scanf("%d",&num)) : : { : : ... : : } : : 像上述狀況,以scanf進行輸入時, : : 若輸入 22 33 44,時會依序讀入22,33,44 : : 請問一下此時如何判斷說讀取時為輸入的最後一個數字. : : 謝謝! -- 我期待 我等待 肩狹骨上的翅膀早些長出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.77.80

05/09 23:11, , 1F
while(scanf("%s",String))!=0) {
05/09 23:11, 1F

05/09 23:12, , 2F
if(!strcmp(String, "END")) break;
05/09 23:12, 2F

05/09 23:12, , 3F
else {int data = atoi(String); ...} }
05/09 23:12, 3F

05/09 23:13, , 4F
當然應該還用不到這種方式..
05/09 23:13, 4F
※ 編輯: tropical72 來自: 180.177.77.80 (05/09 23:22) ※ 編輯: tropical72 來自: 180.177.77.80 (05/09 23:23)

05/10 00:11, , 5F
老實說,我很好奇,輸入的不是數字時會不會變成無窮迴圈。
05/10 00:11, 5F

05/10 00:12, , 6F
看錯了,輸入錯誤不會進去 loop... XD
05/10 00:12, 6F
文章代碼(AID): #1Bvi-sTS (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
1
3
以下文章回應了本文
問題
1
4
完整討論串 (本文為第 5 之 11 篇):
問題
2
9
問題
3
11
問題
6
17
問題
1
1
問題
1
7
問題
1
4
問題
0
6
問題
1
3
問題
1
3
問題
-2
14
文章代碼(AID): #1Bvi-sTS (C_and_CPP)