读取C中的字符串时出现访问冲突错误

时间:2018-11-01 12:28:44

标签: c arrays string character

根据这本书:How to C Programming - Eighth Edition (by Deitel brothers),此代码读取单词“ Hello”:

#define SIZE 20

int main()
{
   char MyStr[SIZE];

   printf("Enter your word: ");
   scanf("%19s", MyStr);
}

此图片来自Sixth Edition online

enter image description here

但是当我这样做时:

int main()
{
   char MyStr[20];

   printf("Enter your word: ");
   scanf_s("%19s", MyStr);
}

我收到访问冲突错误:

enter image description here

我在做什么错了?

2 个答案:

答案 0 :(得分:2)

scanf和scanf_s之间有区别。后者要求指定长度。因此,您的代码应更改为:

Evaluate('FORM.r_' & i)

int main()
{
   char MyStr[20];

   printf("Enter your word: ");
   scanf_s("%19s", MyStr, sizeof(MyStr));
}

答案 1 :(得分:0)

将_CRT_SECURE_NO_WARNINGS添加到链接器选项,并且如果您不想使用安全的方法,它应该允许您使用scanf和其他“不安全”的方法。默认情况下,Visual Studio更喜欢使用安全的