Re: [問題] scanf的問題
※ 引述《tropical72 (藍影)》之銘言:
謝謝大大的回答!
我的意思主要是像這樣:
char s[20];
while(scanf("%s",s))!=EOF)
{
for(i=0;s[i]!='\0';i++)
printf("%c",s[i]);
}
此時如果執行時,我一次就輸入 abc def,
此時他會輸出 abc
def
那我想說,我想在def背後再加上東西,
我能不能加入一個判斷式,
即 if(s[i]== something)時,我能得知,此時def已完畢
並主動在後面連接一些東西.
可能我想法不太對,
不過還是謝謝各位大大辛苦回答.
: 我想你要的是:讓使用者決定資料輸入完沒..
: 比較簡單的方式是類似以下方法:
: 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) {....}
: : 是一樣的意思,
: : 只要輸入不是正常的整數, 這個迴圈就會停下來
: : 參考..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.55.223
推
05/10 02:23, , 1F
05/10 02:23, 1F
→
05/10 02:24, , 2F
05/10 02:24, 2F
→
05/10 12:57, , 3F
05/10 12:57, 3F
→
05/10 12:58, , 4F
05/10 12:58, 4F
討論串 (同標題文章)