如何替换char数组中的单个字符?

时间:2019-03-24 07:25:31

标签: c

我试图弄清楚如何替换char数组中的单个字符。我只是对如何做到这一点感到困惑。

int addInsert (char *editing_buffer, char to_insert, int pos){

   editing_buffer[pos-1] = to_insert;

}

int main() {
    char string[5] = "ABCDE";
    int r = addInsert(string, "Z", 3);
}

我已经尝试过这样做,但是它显示为不可读的符号。这是我第一次使用C,所以我仍然不确定自己在做什么。

3 个答案:

答案 0 :(得分:0)

您的字符数组的初始化程序字符串太长,如果您定义字符字符串[5],则只能使用4个字符或更少的字符,请使用字符字符串[5] =“ ABCD”;相反

答案 1 :(得分:0)

1)您的字符数组初始化错误:

char string[5] = "ABCDE";

您缺少NUL终止字符('\ 0')的空间。

char string[6] = "ABCDE";

char string[] = "ABCDE";

解决了这个问题。

2)(假设addInsert()应该是editor_insert_char()) 您将错误的类型传递给函数的第二个参数。 “ Z”是一个字符串(字符数组),但是您的函数需要一个字符。

使用引号这样调用您的函数。

int r = editor_insert_char(string, 'Z', 3);

答案 2 :(得分:0)

主要问题是,通过使用双引号将Z字符作为字符串文字(即,一个字符数组)传递。由于editing_buffer是一个char数组,当您想用另一个字符替换一个字符时,必须像传递单个字符一样传递它,这意味着您必须使用单引号。

"Z" -->  String literal i.e in memory ['Z', '\0']  
'Z' -->  Character i.e ASCII value of Z

因此,基本上,您尝试将char替换为char*