兄弟们关于scanf
我定义了一个char 变量T为什么在使用scanf(“%c”,&T);的时候系统自动把他跳过了
而我把%c改为%d 就能正常运行了 %c 是字符
%d 是数字 逃兵 发表于 2021-9-29 16:20
%c 是字符
%d 是数字
这个我知道 我定义的变量也是字符里面存放的也是字符我不理解为什么我改成%c 运行到那里就自动跳过这个命令了 你这个问题有意义吗?难道你想自己定规则,写编译器? jackz007 发表于 2021-9-29 16:31
你这个问题有意义吗?难道你想自己定规则,写编译器?
没有呀我就是写的没问题运行的时候出错了 anily 发表于 2021-9-29 16:36
没有呀我就是写的没问题运行的时候出错了
你两差点吵起来了{:10_266:} 我觉着应该是键盘缓冲区有'\n',运行到scanf函数的时候把'\n'赋值给T了,你不把原码发出来谁也不知道 你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是
#include <stdio.h>
int main(void)
{
char T;
printf("Enter a char: ");
scanf("%c", &T);
printf("The char you entered: %c.\n", T);
return 0;
}
运行:
Enter a char: k
The char you entered: k. anily 发表于 2021-9-29 16:36
没有呀我就是写的没问题运行的时候出错了
有截图嘛 你运行时是怎么输入的呢? bszs 发表于 2021-9-30 07:55
我觉着应该是键盘缓冲区有'\n',运行到scanf函数的时候把'\n'赋值给T了,你不把原码发出来谁也不知道
是的是的 兄弟 是这样的
后来我去了解了一下 不好意思 MZZ666 发表于 2021-9-30 09:28
有截图嘛 你运行时是怎么输入的呢?
解决了解决了是缓存区里面有字符谢谢谢谢 hrpzcf 发表于 2021-9-30 08:06
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是
兄弟解决了 谢谢谢谢 问题在于scanf 储存字符有个缓存区 连续使用scanf(“%c“)就不行了 要在前面加空格 #include<stdio.h>
int calculate(int A , int B );
intRe();
char T;
int main()
{
T='Y';
if(T=='Y')
{
Re();
}
else
{
return 0;
}
}
int Re()
{
T='N' ;
printf("%d\n",T);
int a,b ;
printf("请输入两个数 进行相加:\n");
scanf("%d %d",&a,&b) ;
printf("计算结果为:%d \n",calculate(a,b)) ;
printf("想继续计算请输入Y 退出请输入N\n") ;
scanf("%c",&T);
if(T=='Y')
{
Re();
}
}
int calculate(int A , int B )
{
int result ;
result= A +B;
return result;
}
这是代码 hrpzcf 发表于 2021-9-30 08:06
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是
铁子代码我发下面了可以试一下 MZZ666 发表于 2021-9-30 09:28
有截图嘛 你运行时是怎么输入的呢?
铁子代码我发下面了可以试一下
页:
[1]