C语言_scanf函数
scanf函数对format参数的使用说明中提到:format 参数是一个格式化字符串,由格式化占位符和普通字符组成。
除了格式占位符(% 开头)外的非空白字符:指定函数必须从输入流中读取到的字符,如果读取不匹配,则函数调用失败,并从匹配失败处截断输入流
我将下列代码中的scanf("%d", p) 改为 scanf("12%d", p),并在运行中写 12500 ,能获得500的正确答案
可是我若改成scanf("输入%d", p),并在运行中写输入500 ,并不能获取500的正确答案,只能获取100,应该是因为读取不匹配,被截断了输入流,请问这里为什么会读取不匹配呢?
#include <stdio.h>
int main()
{
int a,*p ;
a =100;
p = &a;
printf("请输入a的值:");
scanf("%d", p);
printf("a的值为:%d", a);
return 0;
} scanf函数中没有类似printf的精度控制 楼主你好我这边试过了是正确的
这里我总结了2个原因,还望楼主排查下看看
1. 编译器不同可能会导致不同成果(这是C标准的语法,这个可能性极小我用的 VS2015)
2. 楼主在scanf的时候是不是有空格之类的其他符号 而输入的时候没输入进去等
3. 如果还没解决还希望楼主贴张图出来,这样更方便观察
我叫MD 发表于 2019-10-8 10:39
楼主你好我这边试过了是正确的
这里我总结了2个原因,还望楼主排查下看看
我使用的是MinGW,然后在命令提示符当中运行的
并且提前设置了chcp 65001,utf-8显示格式,避免出现中文的乱码
并没有出现您提到的第二点失误呢 生如夏花133 发表于 2019-10-8 11:35
我使用的是MinGW,然后在命令提示符当中运行的
并且提前设置了chcp 65001,utf-8显示格式,避免出现中文 ...
可以把代码和运行结果贴出来看下吗?有图片的那种 本帖最后由 ijy 于 2019-10-8 14:16 编辑
我用的是VC++6.0编译器,如图所示,应该是"输入"前加了个空格造成格式不匹配才出现了答案不对的情况;如果去掉这个空格答案就对了! 我叫MD 发表于 2019-10-8 13:02
可以把代码和运行结果贴出来看下吗?有图片的那种
#include <stdio.h>
int main()
{
int a,*p ;
a =100;
p = &a;
printf("请输入a的值:");
scanf("输入%d", p);
printf("a的值为:%d", a);
return 0;
}
D:\1_data\C\z_exercise\鱼C求助\1008_2.png 我叫MD 发表于 2019-10-8 13:02
可以把代码和运行结果贴出来看下吗?有图片的那种
我好像发不了照片
结果我复制了一下
D:\1_data\C\鱼C作业>gcc zhizhen.c -o 111
D:\1_data\C\鱼C作业>111
请输入a的值:500
a的值为:100
D:\1_data\C\鱼C作业> ijy 发表于 2019-10-8 13:50
我用的是VC++6.0编译器,如图所示,应该是"输入"前加了个空格造成格式不匹配才出现了答案不对的情况;如果 ...
感觉我并没有加空格,尴尬
生如夏花133 发表于 2019-10-8 14:36
感觉我并没有加空格,尴尬
你应该写"输入500”,结果就是500,而不应该写“500”,结果就变成了100,因为你的scanf函数里有输入两个字; ijy 发表于 2019-10-8 14:48
你应该写"输入500”,结果就是500,而不应该写“500”,结果就变成了100,因为你的scanf函数里有输入两个 ...
稍等稍等,我试一次给你看
D:\1_data\C\鱼C作业>111
请输入a的值:500
a的值为:100
D:\1_data\C\鱼C作业>111
请输入a的值:输入500
a的值为:100
D:\1_data\C\鱼C作业>
一样的 生如夏花133 发表于 2019-10-8 14:57
稍等稍等,我试一次给你看
D:\1_data\C\鱼C作业>111
我不知道你什么编译器?反正vc++6.0编译器把你的代码,和你的"输入500“复制进去回车后,结果就是500,估计你的输入法的问题,或许是全角输入了,而不是半角输入了? ijy 发表于 2019-10-8 15:15
我不知道你什么编译器?反正vc++6.0编译器把你的代码,和你的"输入500“复制进去回车后,结果就是500,估 ...
我感觉应该也是编译器的问题{:10_243:}
页:
[1]