scanf()不接受任何输入

scanf()不接受任何输入,c,gdb,scanf,C,Gdb,Scanf,我让C代码做一些计算(我相信与我的问题无关)。该程序将要求计算一些参数。问题是当我运行代码时,scanf(“%c”,&ch)不能正常工作 我感兴趣的是你是否能重现这个问题,因为我似乎没有做错什么,是吗 我发布了我的程序的可编译和缩短版本 #include<stdio.h> #include<stdlib.h> #include<math.h> int main(void) { float Dia_MM, Dia_I, Se1, Se, Sut

我让C代码做一些计算(我相信与我的问题无关)。该程序将要求计算一些参数。问题是当我运行代码时,scanf(“%c”,&ch)不能正常工作

我感兴趣的是你是否能重现这个问题,因为我似乎没有做错什么,是吗

我发布了我的程序的可编译和缩短版本

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void)
{
        float Dia_MM, Dia_I, Se1, Se, Sut = 75.00;
        float Ka, Kb, Kc, Kd, Ke, Kf;
        char Ch;
        char Bt;
        float Reli;
        printf("Please input the surface condition of the shaft: G, M, H or A\n");
        scanf("%c", &Ch);
//      getchar();
        printf("Please input the diameter of the shaft in inch\n");
        scanf("%f", &Dia_I);
        printf("Please specify whether your shaft is in bending (B) or torsion (T)");
        scanf("%c", &Bt);// THIS LINE IS JUST SKIPPED
        exit(0);
}
scanf()
不使用尾随的换行符。跳过的
scanf()
从用户键入的前一行接收换行符,并在没有收到更多输入的情况下终止

scanf()
换行有点麻烦。一种可能的解决方案是从控制台获取一行代码,然后使用
sscanf()
解析接收到的字符串


另一个更有针对性的解决方案是在最后一次
scanf()
调用的格式字符串中使用
“%c”
%c
格式说明符本身不使用前导空格,这就是它获取剩余换行符而不是用户键入的字符的原因。

如上所述
scanf()
不使用尾随的换行符。但是有另一种方法可以使用
\n
从前一行吸收换行符,例如
scanf(“%c\n”,…)
您也可以使用

scanf(" %c",&c);

“请指定轴是弯曲还是扭转。”chortle@x0n:我更担心振动:-)所以你的意思是将其更改为printf(“请指定轴是弯曲(B)还是扭转(T)\n”);?我试过了,但还是一样problem@YankeeWhiskey:如果您错过了,我已经用几种可能的解决方案编辑了我的答案…使用
%*c
读取字符,而不将结果分配给任何内容。
scanf(" %c",&c);