문자열을 역순으로 (라이브러리 함수를 사용할 수 없음)

두 문자열의 역순을 두 개의 바늘로 설정할 수 있습니다. 하나는 문자열의 첫 번째 주소인 start를 가리키고, 하나는 문자열의 마지막 요소를 가리키는 주소 ('\0'앞에 있는 요소의 주소) end를 가리키며, start구현 코드는 다음과 같습니다.
#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; }

좋은 웹페이지 즐겨찾기