|
发表于 2023-6-16 21:08:20
|
显示全部楼层
这个问题可能是编译器的版本不同导致的。在有些版本的编译器中,使用`%s`格式化字符串时,输入的字符串末尾会有`\r`(回车)和`\n`(换行)两个字符,而在输出时只显示了`\n`,从而导致了输出乱码,因为`\r`被误解释为普通字符输出了。
可以在输入字符串后加上`getchar()`,来避免这个问题,即:
- #include <stdio.h>
- int main()
- {
- char name[256];
- float height, weight;
- printf("请输入您的姓名:");
- scanf("%s", name);
- getchar(); // 添加这一行
- printf("请输入您的身高(cm):");
- scanf("%f", &height);
- printf("请输入您的体重(kg):");
- scanf("%f", &weight);
- printf("========== 正在为您转换 ==========\n");
- height = height / 2.54; // 厘米转换为英寸
- weight = weight / 0.453; // 公斤转换为磅
- printf("%s的身高是%.2f(in),体重是%.2f(lb)\n", name, height, weight);
- return 0;
- }
复制代码
这样,输入字符串之后再加上一个`getchar()`,就可以把输入时的多余字符清除掉了,输出的结果就不会有乱码了。
求最佳答案 |
|