作者 主題: 讓使用者輸入空行後結束,該如何寫?  (閱讀 5146 次)

0 會員 與 1 訪客 正在閱讀本文。

shinefirem

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
http://luckycat.kshs.kh.edu.tw/homework/q429.htm(這是題目)

http://codepad.org/D3vPaKlf(這是我的程式碼)

我希望可以讓使用者輸入空行
就當作輸入結束
然後進行下一次測資
可是我的程式碼(line48~50)
輸入空行後
沒有辦法結束
該怎樣改?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: 讓使用者輸入空行後結束,該如何寫?
« 回覆 #1 於: 2012-07-08 14:22 »
http://luckycat.kshs.kh.edu.tw/homework/q429.htm(這是題目)

http://codepad.org/D3vPaKlf(這是我的程式碼)

我希望可以讓使用者輸入空行
就當作輸入結束
然後進行下一次測資
可是我的程式碼(line48~50)
輸入空行後
沒有辦法結束
該怎樣改?

scanf() 應該是沒法直接處理  enter  鍵吧
樓主可以參考這篇的範例試試看

http://wpollock.com/CPlus/PrintfRef.htm#scanfExamples

shinefirem

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
Re: 讓使用者輸入空行後結束,該如何寫?
« 回覆 #2 於: 2012-07-08 16:04 »
所以必須用gets(start)嗎?
但是我這樣寫結果又會變,我搞不太清楚

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: 讓使用者輸入空行後結束,該如何寫?
« 回覆 #3 於: 2012-07-08 17:53 »
上面連結裡的範例只是參考呀
要依據自已的需求來改
例如像下面這樣

代碼: [選擇]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char start[15],end[15];
int main()
{
  char buf[BUFSIZ];
  memset(buf, 0, sizeof(buf));
  while (fgets(buf, sizeof(buf), stdin) != NULL) {
    if(buf[0]=='\n') break; //只 Enter 就結束迴圈
    while(sscanf(buf, "%s\n",start) >0) {
      memset(buf, 0, sizeof(buf));

      if(start[0]=='\0') break;
      scanf("%s",end);
      printf("%s %s\n",start,end);
    }
    getchar();
  }
  system("pause");
  return 0;
}

我只是依據你第一篇的說明來改
測試完後直接只按 Enter 就會結束迴圈

c/c++我有好長一段時間沒用了
也許有其他更方便、更好的方式 ^_^

shinefirem

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
Re: 讓使用者輸入空行後結束,該如何寫?
« 回覆 #4 於: 2012-07-08 18:18 »
抱歉我看不太懂

while (fgets(buf, sizeof(buf), stdin) != NULL)
while(sscanf(buf, "%s\n",start) >0)


這兩個的意義哪裡不同?

if(buf[0]=='\n') break;
if(start[0]=='\0') break;


還有這兩個爲什麼也不同?

只打其中一個迴圈,會沒辦法輸入空行結束嘛?