修改字符串(字符数组)

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)

也是,但错误显示“表达式必须是可修改的左值”

有谁知道我该怎么做?

mac*_*e_1 5

您是否使用 Visual Studio 编译 C 代码?

如果您是并且编译器强制您使用strcpy_s()而不是strcpy(),您仍然可以strcpy()通过在源文件顶部定义以下宏来使用标准库函数:

#define _CRT_SECURE_NO_WARNINGS
Run Code Online (Sandbox Code Playgroud)

您代码中的实际问题是您以错误的顺序为 strcpy_s() 提供了参数。检查函数的原型以按正确的顺序提供参数。