anily 发表于 2021-9-29 16:17:56

兄弟们关于scanf

我定义了一个char 变量T

为什么在使用scanf(“%c”,&T);的时候系统自动把他跳过了
而我把%c改为%d 就能正常运行了

逃兵 发表于 2021-9-29 16:20:30

%c 是字符
%d 是数字

anily 发表于 2021-9-29 16:24:37

逃兵 发表于 2021-9-29 16:20
%c 是字符
%d 是数字

这个我知道   我定义的变量也是字符里面存放的也是字符我不理解为什么我改成%c 运行到那里就自动跳过这个命令了

jackz007 发表于 2021-9-29 16:31:22

      你这个问题有意义吗?难道你想自己定规则,写编译器?

anily 发表于 2021-9-29 16:36:59

jackz007 发表于 2021-9-29 16:31
你这个问题有意义吗?难道你想自己定规则,写编译器?

没有呀我就是写的没问题运行的时候出错了

Gacy 发表于 2021-9-29 22:53:37

anily 发表于 2021-9-29 16:36
没有呀我就是写的没问题运行的时候出错了

你两差点吵起来了{:10_266:}

bszs 发表于 2021-9-30 07:55:25

我觉着应该是键盘缓冲区有'\n',运行到scanf函数的时候把'\n'赋值给T了,你不把原码发出来谁也不知道

hrpzcf 发表于 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.

MZZ666 发表于 2021-9-30 09:28:58

anily 发表于 2021-9-29 16:36
没有呀我就是写的没问题运行的时候出错了

有截图嘛 你运行时是怎么输入的呢?

anily 发表于 2021-9-30 18:43:11

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

是的是的 兄弟 是这样的
后来我去了解了一下 不好意思

anily 发表于 2021-9-30 18:43:44

MZZ666 发表于 2021-9-30 09:28
有截图嘛 你运行时是怎么输入的呢?

解决了解决了是缓存区里面有字符谢谢谢谢

anily 发表于 2021-9-30 18:45:19

hrpzcf 发表于 2021-9-30 08:06
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是




兄弟解决了 谢谢谢谢   问题在于scanf 储存字符有个缓存区 连续使用scanf(“%c“)就不行了 要在前面加空格

anily 发表于 2021-9-30 18:48:49

#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;
}
这是代码

anily 发表于 2021-9-30 19:01:56

hrpzcf 发表于 2021-9-30 08:06
你不发代码出来谁也不知道问题在哪,你以为问题出在scanf,也许实际上就不是




铁子代码我发下面了可以试一下

anily 发表于 2021-9-30 19:04:51

MZZ666 发表于 2021-9-30 09:28
有截图嘛 你运行时是怎么输入的呢?

铁子代码我发下面了可以试一下
页: [1]
查看完整版本: 兄弟们关于scanf