c - 在 C 中读取字符串时出现访问冲突错误
问题描述
根据书:How to C Programming - Eighth Edition (by Deitel brothers)
这段代码读到“你好”这个词:
#define SIZE 20
int main()
{
char MyStr[SIZE];
printf("Enter your word: ");
scanf("%19s", MyStr);
}
此图来自网络第六版:
但是当我这样做时:
int main()
{
char MyStr[20];
printf("Enter your word: ");
scanf_s("%19s", MyStr);
}
我收到访问冲突错误:
我做错了什么?
解决方案
scanf 和 scanf_s 是有区别的。后者需要指定长度。所以你的代码应该改为:
int main()
{
char MyStr[20];
printf("Enter your word: ");
scanf_s("%19s", MyStr, sizeof(MyStr));
}
或者
int main()
{
char MyStr[20];
printf("Enter your word: ");
scanf("%19s", MyStr);
}
推荐阅读
- java - Firebase ML KIT 无法识别古吉拉特语
- java - 构建所有字符串,其中每个数字都是集合中的一个字符
- amazon-web-services - 设置活动主机时的权限问题
- snowflake-cloud-data-platform - Snowflake - 查询雪花信息架构视图所需的权限
- python - 创建一个类的实例列表
- nativescript - 使用 Nativescript + javascript 自定义 IQKeyboardManager
- cron - 使用 Quartz.net 的 Cron 作业?如何在一天中的某些时间做?
- reactjs - 挂钩状态更新后页面未重新渲染
- sql - SSRS 数据驱动订阅问题
- scala - FS2 动态创建的订阅者