作者hunkchen2016 (我的鸡巴女友)
看板C_and_CPP
标题[问题]请问while(scanf("%d",&sec)!=0)的问题?
时间Fri Feb 16 01:41:47 2018
请问各位下面这两个简单的程式为什麽预期结果会不一样
#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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1518716510.A.F19.html
1F:推 b0920075: 自己去看scanf的回传值 02/16 01:55
2F:→ caras: 这误会大了 02/16 01:58
3F:推 b0920075: 再说两个程式又不一样意思,结果不一样也是很正常的吧 02/16 01:59
4F:推 dzwei: 请跟我一起推广 02/16 02:46
5F:→ dzwei: Scanf_s或bscanf 02/16 02:46
6F:推 school4303: scanf回传值是你正确读入几个输入 你上面的状况 02/16 11:39
7F:→ school4303: 是1 更详细的请自己google 02/16 11:39
8F:推 steve1012: 不要省那一行啦 没比较漂亮 分开写不就会逼你自己想回 02/16 16:29
9F:→ steve1012: 传值是啥了吗 02/16 16:29
10F:推 friends29: 如果scanf会回传读入的值 那你&sec是在传心酸的喔 02/17 11:44
11F:推 alan23273850: 推楼上 02/17 12:42
12F:→ uranusjr: 不能这麽说, 像 strncpy 就是同时会回传你接到的结果 02/17 13:18
13F:→ uranusjr: 不过当然因为 C 的型别限制 scanf 不可能直接回传 int 02/17 13:19
14F:→ uranusjr: 所以原 po 的要求根本毫无道理 02/17 13:19
15F:→ y3k: 使用function的时候了解他的return意义是基本功喔@@ 02/17 15:40
16F:→ johnjohnlin: while (scanf("%d", &sec), sec) 02/19 09:44
17F:→ MOONRAKER: scanf跟strncpy是有什麽关系 你会像你家隔壁的王叔叔吗 02/19 22:08