[問題] 一個使用fgets的問題

看板C_and_CPP作者 (86)時間14年前 (2010/05/14 16:17), 編輯推噓2(2013)
留言15則, 5人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 在使用fgets來讀取輸入的資料的時候,會多一個\n 導致print出來的時候多空好幾行 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) DEV-C++ 4.9.9.2 有問題的code: (請善用置底文標色功能) printf("First Name :"); fgets(infor.firstname, sizeof(infor.firstname), stdin); infor.firstname[strlen(infor.firstname) - 1] = '\0'; printf("Last Name :"); fgets(infor.lastname, sizeof(infor.lastname), stdin); infor.lastname[strlen(infor.lastname) - 1] = '\0'; 我把最後的\n改成\0但是跑出來還是有空行 補充說明: 有需要的話在把全部程式放上來給大家看 謝謝各位 有請高手指點一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.242.187.147

05/14 16:33, , 1F
printf("->%s<-", infor.firstname ) 看有沒有改成功
05/14 16:33, 1F

05/14 16:34, , 2F
第五行那邊,是infor.firstname 還是 infor.lastname 啊?
05/14 16:34, 2F

05/14 16:35, , 3F
用fputs出來也會有多空行嗎?
05/14 16:35, 3F
※ 編輯: kccs 來自: 60.242.187.147 (05/14 16:38)

05/14 16:39, , 4F
不好意思~內文打錯了 修改好了
05/14 16:39, 4F

05/14 16:40, , 5F
請問使用fputs的話 還要把最後的\n吃掉嗎?
05/14 16:40, 5F

05/14 16:42, , 6F
L大的方法用了 但是不太懂意思 能解釋一下嗎?
05/14 16:42, 6F

05/14 16:43, , 7F
不用吧,就在fgets外面加一個fputs就可以了吧.
05/14 16:43, 7F

05/14 16:54, , 8F
如果有改成功應該是 ->Peter<-, 而不是分兩行印, 我懷
05/14 16:54, 8F

05/14 16:54, , 9F
疑是輸出的地方出問題
05/14 16:54, 9F

05/14 20:26, , 10F
不 你根本沒有吃掉換行 strlen(infor.firstname)-2 才對
05/14 20:26, 10F

05/14 20:26, , 11F
strlen(infor.firstname)-1 只是fgets本來就會補上的\0...
05/14 20:26, 11F

05/14 20:29, , 12F
strlen 不是遇到 \0 就停止了嗎@@? 不會算到 \0 吧
05/14 20:29, 12F

05/14 20:41, , 13F
strlen 剛好是 '\0' 的索引, 沒必要 -2
05/14 20:41, 13F

05/14 21:14, , 14F
糟糕 我傻了XD
05/14 21:14, 14F

05/15 22:38, , 15F
結果是輸出的問題 上面的code沒有錯 感謝L大了
05/15 22:38, 15F
文章代碼(AID): #1BxGSNI3 (C_and_CPP)