close
[By JHF 學長]
有這麼多種嗎? 當然沒有, 除非自己寫

1.scanf("%s", buffer);

剛學完程式的人大概都會這樣寫, 拿來讀取大部分的字串
但是遇到有空白的字串就翹掉了

2.fgets(buffer, 1024, stdin);

這是我今天晚上寫昏頭的時候寫的code, 有他的優缺點

優- 可以讀取有空白的字串, 還可以配合buffer的大小控制讀
入的數量

缺- 因為fgets 是吃(還是 ?)的時候就停止然後視為一個
字串, 所以這樣抓下來的字串常常會換到下一行

## 這也讓我今天花了一個小時在抓爲什麼我傳給HILCADT 的
命令會是錯的-_-"

3.gets(buffer);

這才是最簡單有力的版本啊....沒有fgets 的缺點, 但它
卻不是完美的....

優- 可以讀取有空白的字串, 抓到的字串沒有多餘的換行字元

缺- 不能讀取超過buffer大小的字串, 一旦超過, 程式將崩潰

4.其實最完美的大概就是用getc一次一個讀進buffer中, 然
後到了換行字元或是到達buffer極限的時候停止回傳字串
或是用fgets來把最後的垃圾給去掉

Ex- buffer[strlen(buffer)-1] = ''
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 iceis 的頭像
    iceis

    .: iceis' Blog :.

    iceis 發表在 痞客邦 留言(1) 人氣()