欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

不为人知的scanf

程序员文章站 2022-06-24 09:13:42
这是一篇为老谭洗白的文章 前几天,我见有人在群里说,谭浩强那本书不咋样,还不少错误。我就看了看他发出来的错误 那人说,书上一些给出来的代码,连基本的输入都存在问题: 为啥只有15输入进去了,而20却变成了1,1是哪里来的? 我们先把a,b初始化为0再来看看问题所在。 结果发现a的值改变了,但是b的值 ......
这是一篇为老谭洗白的文章

前几天,我见有人在群里说,谭浩强那本书不咋样,还不少错误。我就看了看他发出来的错误

1 #include<stdio.h>
2 int main(){
3     int a,b;
4     scanf("%d,%d",&a,&b);
5     printf("%d %d ",a,b);
6 }

那人说,书上一些给出来的代码,连基本的输入都存在问题:

不为人知的scanf

为啥只有15输入进去了,而20却变成了1,1是哪里来的?

我们先把a,b初始化为0再来看看问题所在。

不为人知的scanf

结果发现a的值改变了,但是b的值为0,这说明b没有存储进去,为什么?

这是因为,scanf函数的输入必须和你前面设定的格式一模一样,比如说这个例子

不为人知的scanf

只有你的键入和你设定的“%d,%d"想符合时,才能正确存储进去