看板 C_and_CPP 關於我們 聯絡資訊
這次作業是用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)
MOONRAKER:scanf("%s")當然是只讀取到空白為止 03/21 15:54
MOONRAKER:你自己對他有錯誤期待,牽拖啥unix 03/21 15:55
uranusjr:Windows 上的 scanf 也不能讀空白吧 -_- 03/21 16:00
liu2007:囧 真的耶.....沒注意到 以前以為scanf會讀到\n之前... 03/21 16:04
liu2007:大概是我沒加過空白吧 Orz.... 03/21 16:04
VictorTom:另外, 小弟我看到了可怕的 fflush(stdin); 了喔@_@" 03/21 19:20
VictorTom:要整行的話不是有fgets還是啥函數可以用嗎?_? 03/21 19:21