所以我试图构建一个带有* char并反转它的函数。该函数有两个参数(N是字符串的长度)
void reverse_str(char *str, int N){
char temp;
temp = str[i];
str[i] = str[N-i];
str[N-i] = temp;
if (i == N)
{
return;
}
i++;
reverse_str(*str, N);
}
但由于某些原因,当编译器到达代码的第三行时; str[i] = str[N-i];
它返回指针空'\0'
是否可以在不制作副本的情况下修改str?我做过任何错误的宣言吗?
BTW i
是一个等于0的全局值,每次递归调用该函数时都会增加。
答案 0 :(得分:1)
N = N -1 在调用函数之前作为第一步。这将解决问题。
如果N是长度,则任何char_array [N]将为'\ 0',因为它是结束字符。 (基本上是字符串终结符)。您希望在\ 0之前对所有内容进行操作,但不包括它。