我在学校的项目中遇到了一个字符串问题,无法解决它,我做了一个测试程序来排除故障,但没有任何运气。我试图只做一个简单的程序来获取一个字符串值,然后将其打印到控制台。当它试图打印字符串时,程序崩溃并抛出异常。我不明白,我认为它是试图保存字符串数据到内存地址,它没有访问,但我不确定,因为我尝试了我的笔记本电脑和个人电脑与相同的问题。
“标记.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;
}
1条答案
按热度按时间qgelzfjb1#
scanf_s(" %s ", &string);
因缺少参数而失败。%s
需要指针和大小。请查看
scanf_s()
上的编译器详细信息,因为某些编译器没有详细遵循C标准。备选方案:查看
fgets()
以将 * 行 * 读入 * 字符串 *。"%s"
前的空格没有任何意义,最好删除它。"%s"
块后的空格,直到检测到后面的非空白。最好也删除此空格。