我在学校项目中遇到了字符串问题,无法解决它,做了一个测试程序来排除故障,但没有任何运气。我只是想做一个简单的程序来获取字符串值,然后将其打印到控制台。当它试图打印字符串时,程序崩溃并抛出异常,我不明白,我认为它试图将字符串数据保存到它无法访问的内存地址,但我不确定,因为我在笔记本电脑和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"
块后面有一个空格,直到检测到后面的非空白。最好也去掉这个空格。