c - c语言输入法
问题描述
为什么我不能在我的 c 程序中输入第三个字符??
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
float f1;
scanf("%f",&f1);
char ch;
scanf("%c",&ch);
printf("Integer %d\nfloat %f\ncharacter %c",a,f1,ch);
}
解决方案
scanf("%c",&ch);
输入float
值并按下enter
后,scanf
读取额外的换行符\n
。为了防止这种情况,请使用:
scanf(" %c",&ch);
Space before%c
读取该额外内容,\n
所需字符将存储在ch
.
为了证明这一点,请参见下面的代码:
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
float f1;
scanf("%f", &f1);
char ch;
scanf("%c", &ch);
printf("Integer %d\nfloat %f\ncharacter %d", a, f1, ch); // changed to %d to print ASCII value
}
输出是:
12
12.3
Integer 12
float 12.300000
character 10
您可以在此处看到输出,它打印 10(ASCII of \n
)。
解决方案:
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
float f1;
scanf("%f", &f1);
char ch;
scanf(" %c", &ch);
printf("Integer %d\nfloat %f\ncharacter %c", a, f1, ch);
}
输出 :
12
12.3
k
Integer 12
float 12.300000
character k
推荐阅读
- javascript - 如何同时关闭模式和导航栏
- vuejs3 - 如何从 Quasar V2 Composition API 设置功能访问引导文件配置的 axios?
- python - 为什么我不能循环和删除数据库?
- reactjs - EBNF 形式的 ReactJs Babel 语法
- scala - KafkaConsumer 连接到错误的代理,因此无法消费
- java - 使用 SwaggerUI 和 JAX-RS - 全局添加自定义标头
- android - 如何在 JetpackCompose 中的 TextField 上加载值
- python - 循环熊猫列并替换值
- javascript - 如何使用setformdata将数据存储在form中
- c# - 如何在 xamarin 表单中可绑定布局的数据模板选择器中获取列表大小