請問各位下面這兩個簡單的程式為什麼預期結果會不一樣
#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) 這樣寫有什麼不對嗎???
作者: caras 2018-02-16 01:58:00
這誤會大了
再說兩個程式又不一樣意思,結果不一樣也是很正常的吧
作者:
dzwei (Cout<< *p << \n ;)
2018-02-16 02:46:00請跟我一起推廣Scanf_s或bscanf
scanf回傳值是你正確讀入幾個輸入 你上面的狀況是1 更詳細的請自己google
不要省那一行啦 沒比較漂亮 分開寫不就會逼你自己想回傳值是啥了嗎
如果scanf會回傳讀入的值 那你&sec是在傳心酸的喔
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2018-02-17 13:18:00不能這麼說, 像 strncpy 就是同時會回傳你接到的結果不過當然因為 C 的型別限制 scanf 不可能直接回傳 int所以原 po 的要求根本毫無道理
作者:
y3k (激流を制するは静水)
2018-02-17 15:40:00使用function的時候了解他的return意義是基本功喔@@
while (scanf("%d", &sec), sec)
scanf跟strncpy是有什麼關係 你會像你家隔壁的王叔叔嗎