鱼C论坛

 找回密码
 立即注册
查看: 1372|回复: 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了,你不把原码发出来谁也不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-29 16:20:30 | 显示全部楼层
%c 是字符
%d 是数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个我知道     我定义的变量也是字符  里面存放的也是字符  我不理解为什么我改成%c 运行到那里就自动跳过这个命令了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

没有呀我就是写的没问题运行的时候出错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你两差点吵起来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2021-9-30 08:06:07 | 显示全部楼层
你不发代码出来谁也不知道问题在哪,你以为问题出在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.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有截图嘛 你运行时是怎么输入的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的是的 兄弟 是这样的
后来我去了解了一下 不好意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

解决了解决了  是缓存区里面有字符  谢谢谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

兄弟解决了 谢谢谢谢   问题在于scanf 储存字符有个缓存区 连续使用scanf(“%c“)就不行了 要在前面加空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 18:48:49 | 显示全部楼层
#include<stdio.h>
int calculate(int A , int B );
int  Re(); 
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;
}
这是代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

铁子代码我发下面了可以试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

铁子代码我发下面了可以试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 11:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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