|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int a,b;
scanf("%d%d",&a,&b)
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
以上是网上的解释
所以怎么才算成功读入,比如输入两个整型就算成功读入,如果输入字符型就不可以?
还有他上面的意思好像是说返回值为int型,还有不为int型的函数吗
以下代码注释中还有个问题
- #include <stdio.h>
- int main()
- {
- int num = 0;
- long sum = 0L; // 0L表示类型为long的0
- int status;
- do
- {
- printf("请输入合法的数字:");
- sum = sum + num;
- status = scanf("%d", &num); //这里的意思是如果输入为整型成功读入status的值就为1,如果为字符型失败就为0?
- } while(status == 1);
- printf("结果是:%ld\n", sum);
- return 0;
- }
复制代码
谢谢
scan族函数很脆弱,用%d输入数据时,如果遇到非法输入,比如本来应该输入数字,但你却输入字符。这个时候它不会读入任何数据,你输入的字符还会留在缓存区。所以该函数很不安全,vs里禁止使用scanf函数,而使用更安全的scanf_s。小甲鱼说,scanf 返回值:
如果函数调用成功,返回值是成功获取并填充到附加参数中的个数。
如果函数调用失败,返回值小于附加参数的个数(甚至是 0)。
如果读取到标准输入流的结尾处,则返回 EOF。
也就是说返回值是用来判断是否输入非法数据或者没有得到想要的数据。
还有返回值可以是任何已知数据类型,包括int char 结构体和类等等。
|
|