13340865629 发表于 2023-6-16 21:04:50

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

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

int main()
{
      char name;
      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;
}

isdkz 发表于 2023-6-16 21:07:17

你的代码看起来是正确的,并且应该能够正确地执行和输出预期的结果。这个代码的作用是获取用户输入的姓名、身高和体重,并将这些值转换为英寸和磅,然后打印出结果。

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

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

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

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

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

如果你尝试了上述建议,但问题仍然存在,你可能需要提供更多信息,以便我们能够更好地帮助你解决问题。

sfqxx 发表于 2023-6-16 21:08:20

这个问题可能是编译器的版本不同导致的。在有些版本的编译器中,使用`%s`格式化字符串时,输入的字符串末尾会有`\r`(回车)和`\n`(换行)两个字符,而在输出时只显示了`\n`,从而导致了输出乱码,因为`\r`被误解释为普通字符输出了。

可以在输入字符串后加上`getchar()`,来避免这个问题,即:

#include <stdio.h>

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

求最佳答案

Ewan-Ahiouy 发表于 2023-6-16 21:09:59

我这里没有问题啊{:10_277:}

13340865629 发表于 2023-6-16 21:12:24

还是不对,是mingw版本的问题吗》可是版本是按照小甲鱼的要求配的呀

13340865629 发表于 2023-6-16 21:13:08

Ewan-Ahiouy 发表于 2023-6-16 21:09
我这里没有问题啊

我这里就有问题
你的mingw版本是?

13340865629 发表于 2023-6-16 21:14:05

我是在vscode里配置的

sfqxx 发表于 2023-6-16 22:08:15

13340865629 发表于 2023-6-16 21:14
我是在vscode里配置的

看看3#

歌者文明清理员 发表于 2023-6-17 08:48:41

sfqxx 发表于 2023-6-16 22:08
看看3#

555

13340865629 发表于 2023-6-18 15:34:38

sfqxx 发表于 2023-6-16 22:08
看看3#

mingw是版本x86_64-8.1.0-release-posix-seh-rt_v6-rev0
看看

python/print 发表于 2023-7-6 16:00:17

* 可能原因01
将你的代码拖进某个软件中就可以发现,这个是GB2312编码的。
对于GB2312编码,编译器可能会出现乱码的情况,可以使用UTF-8编码。
* 可能原因02
name前面没有&符号,可以试试加上&符号
scanf("%s", &name);
页: [1]
查看完整版本: 小甲鱼的第六节课的动动手代码,char的使用在vscode上没有实现