首页 > 解决方案 > 在 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);
}

我收到访问冲突错误:

在此处输入图像描述

我做错了什么?

标签: carraysstringcharacter

解决方案


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);
}

推荐阅读