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] = ''
有這麼多種嗎? 當然沒有, 除非自己寫
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] = ''
全站熱搜
留言列表