[問題] unix 的 scanf 跟 win 上的scanf 有不ꐠ…

看板C_and_CPP作者 (薯)時間15年前 (2010/03/21 15:27), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
這次作業是用C 在unix 上跑socket (SMTP) 前面都沒問題 sayHello(); sendFromAddr(); sendToAddr(); sendData(); 可是到了輸入內容後 我輸入 abc d erfg htwkefwo ;owji e 然後按enter 信寄出去了 程式也結束了 可是我去收信看的時候 整封信的內容只有 abc 後面的 d erfg htwkefwo ;owji e 都不見了 我原本以為這個是SMTP的問題 所以我用cmd 連上telnet XX.XX.XX.XX 25 然後寄出一封信 後來發現 SMTP 還是很忠實地呈現我在按下 enter 鍵之前所有輸入的內容 究竟是為什麼會這樣呢?? 是unix 本身的關係嗎?? 以下是我輸入內容的副程式 void writeContent() { int check; char data[MAX]; do { fflush(stdin); scanf("%s", &data); if (strcmp(data, ".")) { strcat(data, "\n"); write(connectedServer, data, strlen(data)); } else break; } while (1); strcpy(data,".\n"); write(connectedServer, data, strlen(data)); } -- 肝不好 肝若好 人生是黑白的 考卷是空白的 、 ﹐ ● ●b ▎ ●> ● ▌ ﹍﹍ 囧> 幹... ▲ ■┘ ▎ ■ ▋ ︶■ 〈﹀ ∥ ▁▁∥ ▎ ﹀〉▊ 〈\ ψcockroach727 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.58.39 ※ 編輯: liu2007 來自: 118.232.58.39 (03/21 15:28) ※ 編輯: liu2007 來自: 118.232.58.39 (03/21 15:29)

03/21 15:54, , 1F
scanf("%s")當然是只讀取到空白為止
03/21 15:54, 1F

03/21 15:55, , 2F
你自己對他有錯誤期待,牽拖啥unix
03/21 15:55, 2F

03/21 16:00, , 3F
Windows 上的 scanf 也不能讀空白吧 -_-
03/21 16:00, 3F

03/21 16:04, , 4F
囧 真的耶.....沒注意到 以前以為scanf會讀到\n之前...
03/21 16:04, 4F

03/21 16:04, , 5F
大概是我沒加過空白吧 Orz....
03/21 16:04, 5F

03/21 19:20, , 6F
另外, 小弟我看到了可怕的 fflush(stdin); 了喔@_@"
03/21 19:20, 6F

03/21 19:21, , 7F
要整行的話不是有fgets還是啥函數可以用嗎?_?
03/21 19:21, 7F
文章代碼(AID): #1BfSfTGK (C_and_CPP)