关于scanf的疑惑以及测试结果

来源:互联网 发布:windows碎片整理 编辑:程序博客网 时间:2024/06/08 00:29

今天无意间想到一个简答的问题,刚好写个文章作为msdn我个人第一篇文章

关于scanf

#include<stdio.h>
int main(void)
{
int a,b;
printf("%d\n",scanf("%d%c",&a,&b));


return 0;
}

输入测试数据   12s                  输出数据      2

   s12                                        0

足以说明scanf在读取值的时候,遇见没有成功读入的,scanf函数直接结束并且返回已读入的个数,不会一直停留在那边重复尝试读取。

如果非直接结束 假设会一直尝试读取 就不可能实现输出数据

     假设第一个读取失败,用第二个读取,那么s12应该返回1 因为%d读取s,没办法读取,马上换%c读取,成功1个,返回1

但是结果返回0表示,第一个%d尝试读取s时候,读取失败,他没有重复一直尝试读取(要不然程序就卡死),此时程序直接结束,没有读取到的,返回0

光标仍停留在搞不定的字符前面等待程序其他语句读取。

1 0
原创粉丝点击