C语言 在字符串输入输出中抛出异常



我在学校项目中遇到了字符串问题,无法解决它,做了一个测试程序来排除故障,但没有任何运气。我只是想做一个简单的程序来获取字符串值,然后将其打印到控制台。当它试图打印字符串时,程序崩溃并抛出异常,我不明白,我认为它试图将字符串数据保存到它无法访问的内存地址,但我不确定,因为我在笔记本电脑和pc上都尝试过同样的问题。

"在tokenizing.c.exe中0x00007FFAACA60369 (ucrtbased.dll)抛出异常:0xC0000005:访问违反写入位置0x0000001F1F100000.">

#include <stdio.h>
int main() {
char string[100];
printf("Enter a string: ");
scanf_s(" %s ", &string);
printf(" %s ", string);
return 0;
}

scanf_s(" %s ", &string);失败,因为缺少一个参数。%s有指针和大小。

scanf_s(" %s ", string, (rsize_t) 100);

检查scanf_s()上的编译器细节,因为一些编译器没有详细遵循C标准。


备选方案:检查fgets()读入字符串


"%s"前的空格不起作用。最好把它扔掉。

"%s"块后面有一个空格,直到检测到后面的非空白。最好也去掉这个空格。

相关内容

最新更新