c - VS 代码正在打印奇怪的字符而不是 C 语言中的给定文本
问题描述
在这里我输入我的名字Amir
,但正在打印奇怪的字符É
我的代码:
#include<stdio.h>
int main()
{
char Name[64];
printf("Enter first name: ");
scanf("%c", &Name);
printf("%c", Name);
}
解决方案
这里有几件事要解决。
首先,使用正确的格式说明符来打印值。%c
处理一个字符。要打印字符串,您需要使用%s
.
如果您必须使用scanf
,那么除非用户输入 64 个或更多字符,否则以下应该可以正常工作。
scanf("%s", Name);
printf("%s", Name);
但是,强烈建议避免使用scanf
获取字符串作为用户输入。请改用fgets。
fgets(name, 63, stdin);
printf("%s", name);
我建议您阅读 的手册页fgets()
,但简而言之,使用它的好处scanf
是它可以防止数组溢出(数组越界)。
推荐阅读
- python - TF 2.0 中具有多个附加输入的自定义损失函数
- asp.net - 什么可以用来替代旧版 .NET Web 应用程序中的 Windows 身份验证?
- android - 合并回收站查看项目
- excel - 无法使用 Excel 中的“文本到列”和“单元格格式”选项将带有美元符号和逗号的美元金额格式化为简单数字
- javascript - 如何使用 css 显示网格使我的列号动态化?
- javascript - Chart JS - 页面刷新后记住隐藏标签状态
- java - Firebase:每次都必须验证用户,它运行应用程序
- flutter - Flutter 应用错误 发生异常。_TypeError(类型'String'不是'index'类型'int'的子类型)
- c++ - 为什么这个类模板参数被视为转发引用?
- java - 如何从 Java 消费者的主题中的消息中从模式注册表中检索 AVRO 模式