修改字符串(char数组) [英] Modifying a String (char array)
问题描述
我正在尝试用C语言修改字符串
I am trying to modify a string in C language
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);
运行此命令时,它显示异常"Lab3Parti.exe中0x7BEBF71D(ucrtbased.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000006"
When I run this it shows an exception "Unhandled exception at 0x7BEBF71D (ucrtbased.dll) in Lab3Parti.exe: 0xC0000005: Access violation reading location 0x00000006"
我尝试过
signal_cat = "HPHA";
也是,但是错误显示表达式必须是可修改的左值"
too, but an error shows "expression must be a modifiable lvalue"
有人知道我该怎么做吗?
Does anyone know how I can go about doing this?
推荐答案
您指定了无效的参数顺序.调用strcpy_s应该看起来像
You specified an invalid order of arguments. A call of strcpy_s should look like
strcpy_s(signal_cat, sizeof( signal_cat ), "HPHA" );
否则,请使用标准的C函数 strcpy
如
Otherwise use the standard C function strcpy
like
strcpy( signal_cat, "HPHA" );
提供了数组signal_cat有足够的空间来容纳字符串文字.
provided that the array signal_cat has enough space to accommodate the string literal.
或者您可以使用其他标准函数 strncpy
Or you can use another standard function strncpy
strncpy( signal_cat, "HPHA", sizeof( signal_cat ) );
signal_cat[sizeof( signal_cat )-1] = '\0';
至此声明
signal_cat = "HPHA";
然后,数组没有赋值运算符.它们是不可修改的左值.
then arrays do not have the assignment operator. They are non-modifiable lvalues.
这篇关于修改字符串(char数组)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!