鱼C论坛

 找回密码
 立即注册
查看: 1610|回复: 14

[已解决]兄弟们关于scanf

[复制链接]
发表于 2021-9-29 16:17:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我定义了一个char 变量T

为什么在使用scanf(“%c”,&T);的时候  系统自动把他跳过了
而我把%c改为%d 就能正常运行了
最佳答案
2021-9-30 07:55:25
我觉着应该是键盘缓冲区有'\n',运行到scanf函数的时候把'\n'赋值给T了,你不把原码发出来谁也不知道
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-29 16:20:30 | 显示全部楼层
%c 是字符
%d 是数字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 16:24:37 | 显示全部楼层
逃兵 发表于 2021-9-29 16:20
%c 是字符
%d 是数字

这个我知道     我定义的变量也是字符  里面存放的也是字符  我不理解为什么我改成%c 运行到那里就自动跳过这个命令了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 16:31:22 | 显示全部楼层
        你这个问题有意义吗?难道你想自己定规则,写编译器?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 16:36:59 | 显示全部楼层
jackz007 发表于 2021-9-29 16:31
你这个问题有意义吗?难道你想自己定规则,写编译器?

没有呀我就是写的没问题运行的时候出错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 22:53:37 | 显示全部楼层
anily 发表于 2021-9-29 16:36
没有呀我就是写的没问题运行的时候出错了

你两差点吵起来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 07:55:25 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
我觉着应该是键盘缓冲区有'\n',运行到scanf函数的时候把'\n'赋值给T了,你不把原码发出来谁也不知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 08:06:07 | 显示全部楼层
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     char T;

  5.     printf("Enter a char: ");
  6.     scanf("%c", &T);
  7.     printf("The char you entered: %c.\n", T);

  8.     return 0;
  9. }
复制代码


运行:
  1. Enter a char: k
  2. The char you entered: k.
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 09:28:58 | 显示全部楼层
anily 发表于 2021-9-29 16:36
没有呀我就是写的没问题运行的时候出错了

有截图嘛 你运行时是怎么输入的呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 18:43:11 | 显示全部楼层
bszs 发表于 2021-9-30 07:55
我觉着应该是键盘缓冲区有'\n',运行到scanf函数的时候把'\n'赋值给T了,你不把原码发出来谁也不知道

是的是的 兄弟 是这样的
后来我去了解了一下 不好意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 18:43:44 | 显示全部楼层
MZZ666 发表于 2021-9-30 09:28
有截图嘛 你运行时是怎么输入的呢?

解决了解决了  是缓存区里面有字符  谢谢谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 18:45:19 | 显示全部楼层
hrpzcf 发表于 2021-9-30 08:06
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是

兄弟解决了 谢谢谢谢   问题在于scanf 储存字符有个缓存区 连续使用scanf(“%c“)就不行了 要在前面加空格
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 18:48:49 | 显示全部楼层
  1. #include<stdio.h>
  2. int calculate(int A , int B );
  3. int  Re();
  4. char T;
  5. int main()
  6. {
  7.    
  8.     T='Y';
  9.         if(T=='Y')
  10.         {
  11.          Re();

  12.         }
  13.         else
  14.         {
  15.                 return 0;
  16.         }
  17.        
  18. }
  19. int Re()
  20. {
  21.            T='N' ;
  22.            printf("%d\n",T);
  23.                 int a,b ;
  24.                 printf("请输入两个数 进行相加:\n");
  25.                 scanf("%d %d",&a,&b) ;
  26.             printf("计算结果为:%d \n",calculate(a,b)) ;
  27.                 printf("想继续计算请输入Y 退出请输入N\n") ;
  28.                 scanf("%c",&T);
  29.                 if(T=='Y')
  30.                 {
  31.                         Re();
  32.                 }
  33.                
  34. }
  35. int calculate(int A , int B )
  36. {
  37.         int result ;
  38.     result= A +  B;
  39.         return result;
  40. }
复制代码

这是代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 19:01:56 | 显示全部楼层
hrpzcf 发表于 2021-9-30 08:06
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是

铁子代码我发下面了可以试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 19:04:51 | 显示全部楼层
MZZ666 发表于 2021-9-30 09:28
有截图嘛 你运行时是怎么输入的呢?

铁子代码我发下面了可以试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 03:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表