鱼C论坛

 找回密码
 立即注册
查看: 995|回复: 10

小甲鱼的第六节课的动动手代码,char的使用在vscode上没有实现

[复制链接]
发表于 2023-6-16 21:04:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在学到小甲鱼c语言的第六节课时,动动手的第二题,用了char,我用小甲鱼的代码,输出时,就是不显示输入的名字“小甲鱼”,然后就会是乱码;这是代码,我的mingw是版本x86_64-8.1.0-release-posix-seh-rt_v6-rev0
我也不知道是不是版本的问题,想问问各位大佬们
#include <stdio.h>

int main()
{
        char name[256];
        float height, weight;

        printf("请输入您的姓名:");
        scanf("%s", name);

        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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-16 21:07:17 | 显示全部楼层
你的代码看起来是正确的,并且应该能够正确地执行和输出预期的结果。这个代码的作用是获取用户输入的姓名、身高和体重,并将这些值转换为英寸和磅,然后打印出结果。

关于你遇到的问题,我有几个可能的建议:

1. 输入格式问题:当你在程序中输入你的名字时,你是否输入了带有空格的名字? scanf("%s", name);  这一行将空格作为字符串结束的标志,所以如果你输入的名字包含空格,那么它只会获取到空格之前的部分。

2. 字符编码问题:乱码问题通常与字符编码有关。C语言本身并没有对字符编码进行规定,因此字符的表示方式取决于你的系统和编译器。如果你的名字中包含非ASCII字符(例如中文),那么你可能需要确保你的系统和编译器都支持相同的字符编码(例如UTF-8)。

3. 编译器问题:虽然较少见,但有可能是编译器的问题。你可以尝试使用另一种编译器,或者升级到新版本的mingw,看看问题是否仍然存在。

4. 环境问题:你的代码在我这里运行正常。可以尝试在其他系统或环境下运行你的代码,看看问题是否仍然存在。

如果你尝试了上述建议,但问题仍然存在,你可能需要提供更多信息,以便我们能够更好地帮助你解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()`,就可以把输入时的多余字符清除掉了,输出的结果就不会有乱码了。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-16 21:09:59 | 显示全部楼层
我这里没有问题啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-16 21:12:24 | 显示全部楼层
还是不对,是mingw版本的问题吗》可是版本是按照小甲鱼的要求配的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-16 21:13:08 | 显示全部楼层
Ewan-Ahiouy 发表于 2023-6-16 21:09
我这里没有问题啊

我这里就有问题
你的mingw版本是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-16 21:14:05 | 显示全部楼层
我是在vscode里配置的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-16 22:08:15 | 显示全部楼层
13340865629 发表于 2023-6-16 21:14
我是在vscode里配置的

看看3#
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-17 08:48:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-18 15:34:38 | 显示全部楼层

mingw是版本x86_64-8.1.0-release-posix-seh-rt_v6-rev0
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-6 16:00:17 | 显示全部楼层
* 可能原因01
将你的代码拖进某个软件中就可以发现,这个是GB2312编码的。
对于GB2312编码,编译器可能会出现乱码的情况,可以使用UTF-8编码。
* 可能原因02
name前面没有&符号,可以试试加上&符号
scanf("%s", &name);
image.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 08:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表