scanf()不接受任何输入
我让C代码做一些计算(我相信与我的问题无关)。该程序将要求计算一些参数。问题是当我运行代码时,scanf(“%c”,&ch)不能正常工作 我感兴趣的是你是否能重现这个问题,因为我似乎没有做错什么,是吗 我发布了我的程序的可编译和缩短版本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
#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);