所以我試圖建立一個函數,它需要一個* 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的全局值,每次遞歸調用函數時都會增加。
「N是字符串的長度」。這意味着'str [N-0]'總是NUL。因爲根據定義,C字符串具有NUL字符作爲位於'strlen'索引處的最後一個字符。 – kaylum
'while(N> 1){swap(&str [0],&str [N-1]); N - = 2; STR ++; ''可以做到。 – chux