修改字符串(char数组) [英] Modifying a String (char array)

查看:156
本文介绍了修改字符串(char数组)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆