WXY*_*XYZ 2 c arrays c-strings char strcpy
我正在尝试用 C 语言修改字符串
char signal_cat[8];
if (k == 1) {
strcpy_s(signal_cat, "HPHA",6); //why cant I change char array (string) values???
}
else if (k == 2) {
strcpy_s(signal_cat, "Normal",6);
}
printf("Original signal category: %s \n", signal_cat);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它显示一个异常“Lab3Parti.exe 中 0x7BEBF71D (ucrtbased.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000006”
我试过了
signal_cat = "HPHA";
Run Code Online (Sandbox Code Playgroud)
也是,但错误显示“表达式必须是可修改的左值”
有谁知道我该怎么做?
您是否使用 Visual Studio 编译 C 代码?
如果您是并且编译器强制您使用strcpy_s()而不是strcpy(),您仍然可以strcpy()通过在源文件顶部定义以下宏来使用标准库函数:
#define _CRT_SECURE_NO_WARNINGS
Run Code Online (Sandbox Code Playgroud)
您代码中的实际问题是您以错误的顺序为 strcpy_s() 提供了参数。检查函数的原型以按正确的顺序提供参数。