그래서 * char 걸리고 그것을 반대로 함수를 빌드하려면 노력하고있어. 함수는char 포인터를 수정 하시겠습니까?
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);
}
(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