作者liu2007 (薯)
看板C_and_CPP
標題[問題] unix 的 scanf 跟 win 上的scanf 有不一樣嗎@.@?
時間Sun Mar 21 15:27:18 2010
這次作業是用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 囧 ▎ ●> ● ◤
▌ ﹍﹍ 0 ▊囧>
幹...
▲ ■┘ ■ ▎ ■ █◤ ▌ ㄏ▋ ︶■
〈﹀ ∥ ▁▁∥ ▎ ﹀〉◤
▋ ▊ 〈\
ψ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