[爆卦]While(scanf)是什麼?優點缺點精華區懶人包

為什麼這篇While(scanf)鄉民發文收入到精華區:因為在While(scanf)這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者hunkchen2016 (我的雞巴女友)看板C_and_CPP標題[問題]請問while(sc...


請問各位下面這兩個簡單的程式為什麼預期結果會不一樣

#include <stdio.h>
const int S_PER_M=60;
const int S_PER_H=3600;
const double M_PER_K=0.6213;
int main(int argc, char **argv)
{
int sec;
while(scanf("%d",&sec)!=0)
{
printf("FFF\n");
fflush(stdin);
scanf("%d",&sec);
}
printf("Ending\n");
return 0;
}
上面這個程式我不管怎麼按"0"都不會跳出while
但是下面這個卻可以

#include <stdio.h>
const int S_PER_M=60;
const int S_PER_H=3600;
const double M_PER_K=0.6213;
int main(int argc, char **argv)
{
int sec;
scanf("%d",&sec);
while(sec!=0)
{
printf("FFF\n");
fflush(stdin);
scanf("%d",&sec);
}
printf("Ending\n");
return 0;
}
請問while(scanf("%d",&sec)!=0) 這樣寫有什麼不對嗎???



--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.204.100.59
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1518716510.A.F19.html
b0920075: 自己去看scanf的回傳值 02/16 01:55
caras: 這誤會大了 02/16 01:58
b0920075: 再說兩個程式又不一樣意思,結果不一樣也是很正常的吧 02/16 01:59
dzwei: 請跟我一起推廣 02/16 02:46
dzwei: Scanf_s或bscanf 02/16 02:46
school4303: scanf回傳值是你正確讀入幾個輸入 你上面的狀況 02/16 11:39
school4303: 是1 更詳細的請自己google 02/16 11:39
steve1012: 不要省那一行啦 沒比較漂亮 分開寫不就會逼你自己想回 02/16 16:29
steve1012: 傳值是啥了嗎 02/16 16:29
friends29: 如果scanf會回傳讀入的值 那你&sec是在傳心酸的喔 02/17 11:44
alan23273850: 推樓上 02/17 12:42
uranusjr: 不能這麼說, 像 strncpy 就是同時會回傳你接到的結果 02/17 13:18
uranusjr: 不過當然因為 C 的型別限制 scanf 不可能直接回傳 int 02/17 13:19
uranusjr: 所以原 po 的要求根本毫無道理 02/17 13:19
y3k: 使用function的時候了解他的return意義是基本功喔@@ 02/17 15:40
johnjohnlin: while (scanf("%d", &sec), sec) 02/19 09:44
MOONRAKER: scanf跟strncpy是有什麼關係 你會像你家隔壁的王叔叔嗎 02/19 22:08

你可能也想看看

搜尋相關網站