首页 > 解决方案 > VS 代码正在打印奇怪的字符而不是 C 语言中的给定文本

问题描述

在这里我输入我的名字Amir,但正在打印奇怪的字符É

我的代码:

#include<stdio.h>
int main()
{
    char Name[64];
    printf("Enter first name: ");
    scanf("%c", &Name);
    printf("%c", Name);
}

来源:https ://i.stack.imgur.com/qfcUD.png

标签: cvisual-studio-code

解决方案


这里有几件事要解决。

首先,使用正确的格式说明符来打印值。%c处理一个字符。要打印字符串,您需要使用%s.

如果您必须使用scanf,那么除非用户输入 64 个或更多字符,否则以下应该可以正常工作。

scanf("%s", Name);
printf("%s", Name);

但是,强烈建议避免使用scanf获取字符串作为用户输入。请改用fgets

fgets(name, 63, stdin);
printf("%s", name);

我建议您阅读 的手册页fgets(),但简而言之,使用它的好处scanf是它可以防止数组溢出(数组越界)。


推荐阅读