我试图弄清楚如何替换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,所以我仍然不确定自己在做什么。
答案 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*
。