문자열을 역순으로 (라이브러리 함수를 사용할 수 없음)
1528 단어 将一个字符串逆序(递归实现)
#include<stdio.h>
#include<string.h>
void reverse(char *str)
{
char tmp = 0;
char *start;
char *end;
start = str;
end = str + strlen(str) - 1;
while(start < end)
{
tmp = *start;
*start = *end;
*end = tmp;
start ++;
end --;
}
}
int main()
{
char str[] = "abcdef";
reverse(str);
printf("%s",str);
return 0;
}
귀속 방법도 사용할 수 있습니다.
먼저 문자열'abcdef'의 첫 번째 요소를 저장한 다음에 마지막 요소를 첫 번째 요소의 위치에 놓고, 마지막 요소는'\0'을 부여합니다. 함수를 호출할 때 전송된 문자열의 첫 번째 주소를 호출할 때 이전 문자열이 한 요소의 주소를 뒤로 이동합니다. 그 길이가 1보다 큰지 판단합니다. 만약에 1보다 크면 위의 동작을 반복하고, 마지막 함수는 완성된 후에 함수를 되돌려줍니다.지난번 함수에 저장된 값을 함수에 len-1의 위치에 부여합니다.
코드는 다음과 같습니다.
#include<stdio.h>
#include<assert.h>
int str_len(char *str) // strlen
{
assert(str);
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
void reverse(char *str) //
{
char *p = str;
char tmp = 0;
int len = 0;
len = str_len(p);
if (len > 1)
{
tmp = p[0];
p[0] = p[len - 1];
p[len - 1] = '\0';
reverse(p + 1);
p[len - 1] = tmp;
}
}
int main()
{
char str[] = "abcdef";
reverse(str);
printf("%s
", str);
system("pause");
return 0;
}