C语言中scanf如果像一个%d的整型变量赋值一个字符或字符串有什么后果
EG:scanf("%d",&x);中如果输入一个字符串什么的,到底存的数据是什么?会发生什么?求解。不要乱答。...
EG:scanf("%d",&x);中如果输入一个字符串什么的,到底存的数据是什么?会发生什么?求解。不要乱答。
展开
展开全部
int n;
n = scanf("%d",&x);
if (n==1) printf("成功读入一个整型数 ");
else printf("我失败了,没读到数");
如果输入一个字符串什么的,存的数据是 %d 型 -- 因为这是你规定的 有格式 读的 格式。你还要用 函数的返回值判断,读成功了没有,读成功才收到 整型,没读成功 则 x里 没有东西。
例如, 输入字符串是 123AB, x 读到 123, 多余 AB 留在输入流中。
例如, 输入字符串是 AB123, 读语句失败, x 没读到东西。
n = scanf("%d",&x);
if (n==1) printf("成功读入一个整型数 ");
else printf("我失败了,没读到数");
如果输入一个字符串什么的,存的数据是 %d 型 -- 因为这是你规定的 有格式 读的 格式。你还要用 函数的返回值判断,读成功了没有,读成功才收到 整型,没读成功 则 x里 没有东西。
例如, 输入字符串是 123AB, x 读到 123, 多余 AB 留在输入流中。
例如, 输入字符串是 AB123, 读语句失败, x 没读到东西。
展开全部
因为你指定了%d来读取一个整数,scanf()函数开始每次读取一个输入字符,它跳过空白字符(包含空格、制表符和换行符)直到遇到一个非空白字符,并期望发现一个数字字符或者一个符号(+或者-)。如果发现一个数字或符号,那么就保存并读取下一个字符;如果接下来的字符是一个数字,再保存,继续读取。如此持续直到遇到一个非数字字符,此时函数认为:已经读到了整数的末尾。scanf会将这个非数字字符放回输入缓冲区。这意味着:下一次程序开始读取输入时,仍将从这个非数字字符开始。如果你使用多个%d读取整数,但是你不小心在中间输入了非数字字符,那么除了非数字字符之前对应的变量外,后面的变量将不会被赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个如果顺利读取到的话,字符进行ACS值转换~变成数字~
如果是字符串的话~有的编译器会读取第一个~有些就直接报错出现乱码
如果是字符串的话~有的编译器会读取第一个~有些就直接报错出现乱码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询