锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产午夜免费高清久久影院,久久久无码一区二区三区,久久亚洲精品视频http://m.shnenglu.com/85940806/archive/2011/06/11/148508.htmlMike SongMike SongSat, 11 Jun 2011 14:11:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148508.htmlhttp://m.shnenglu.com/85940806/comments/148508.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148508.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148508.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148508.html/***
*char *memchr(buf, chr, cnt) - search memory for given character.
*
*Purpose:
*       Searches at buf for the given character, stopping when chr is
*       first found or cnt bytes have been searched through.
*
*Entry:
*       void *buf  - memory buffer to be searched
*       int chr    - character to search for
*       size_t cnt - max number of bytes to search
*
*Exit:
*       returns pointer to first occurence of chr in buf
*       returns NULL if chr not found in the first cnt bytes
*
*Exceptions:
*
******************************************************************************
*/

void * __cdecl memchr (
        
const void * buf,
        
int chr,
        size_t cnt
        )
{
        
while ( cnt && (*(unsigned char *)buf != (unsigned char)chr) ) {
                buf 
= (unsigned char *)buf + 1;
                cnt
--;
        }

        
return(cnt ? (void *)buf : NULL);
}


Mike Song 2011-06-11 22:11 鍙戣〃璇勮
]]>
14 - memcpy and memmove differencehttp://m.shnenglu.com/85940806/archive/2011/06/11/148507.htmlMike SongMike SongSat, 11 Jun 2011 14:09:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148507.htmlhttp://m.shnenglu.com/85940806/comments/148507.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148507.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148507.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148507.html/***
*memmove - Copy source buffer to destination buffer
*
*Purpose:
*       memmove() copies a source memory buffer to a destination memory buffer.
*       This routine recognize overlapping buffers to avoid propogation.
*       For cases where propogation is not a problem, memcpy() can be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl mymemcpy (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;
  
/*
  * copy from lower addresses to higher addresses
  
*/
  
while (count--) {
    
*(char *)dst = *(char *)src;
    dst 
= (char *)dst + 1;
    src 
= (char *)src + 1;
  }

  
return(ret);
}

void * __cdecl mymemmove (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;

  
if (dst <= src || (char *)dst >= ((char *)src + count)) {
    
/*
    * Non-Overlapping Buffers
    * copy from lower addresses to higher addresses
    
*/
    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst + 1;
      src 
= (char *)src + 1;
    }
  }
  
else {
    
/*
    * Overlapping Buffers
    * copy from higher addresses to lower addresses
    
*/
    dst 
= (char *)dst + count - 1;
    src 
= (char *)src + count - 1;

    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst - 1;
      src 
= (char *)src - 1;
    }
  }

  
return(ret);
}

int _tmain(int argc, _TCHAR* argv[])
{
  
int i = 0;
  
int a[10];

  
for(i; i < 10; i++)
  {
    a[i] 
= i;
  }

  mymemcpy(
&a[4], a, sizeof(int)*6);

  
for(i = 0; i < 10; i++)
  {
    printf(
"%d ",a[i]);
  }

  printf(
"\n");

  
for(i=0; i < 10; i++)
  {
    a[i] 
= i;
  }
  mymemmove(
&a[4], a, sizeof(int)*6);

  
for(i = 0; i < 10; i++)
  {
    printf(
"%d ",a[i]);
  }

  printf(
"\n");

    
return 0;
}


Result:
0 1 2 3 0 1 2 3 0 1
0 1 2 3 0 1 2 3 4 5



Mike Song 2011-06-11 22:09 鍙戣〃璇勮
]]>
13 - memmovehttp://m.shnenglu.com/85940806/archive/2011/06/11/148506.htmlMike SongMike SongSat, 11 Jun 2011 13:52:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148506.htmlhttp://m.shnenglu.com/85940806/comments/148506.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148506.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148506.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148506.html/***
*memmove - Copy source buffer to destination buffer
*
*Purpose:
*       memmove() copies a source memory buffer to a destination memory buffer.
*       This routine recognize overlapping buffers to avoid propogation.
*       For cases where propogation is not a problem, memcpy() can be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl memmove (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;

  
if (dst <= src || (char *)dst >= ((char *)src + count)) {
    
/*
    * Non-Overlapping Buffers
    * copy from lower addresses to higher addresses
    
*/
    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst + 1;
      src 
= (char *)src + 1;
    }
  }
  
else {
    
/*
    * Overlapping Buffers
    * copy from higher addresses to lower addresses
    
*/
    dst 
= (char *)dst + count - 1;
    src 
= (char *)src + count - 1;

    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst - 1;
      src 
= (char *)src - 1;
    }
  }

  
return(ret);
}


Mike Song 2011-06-11 21:52 鍙戣〃璇勮
]]>
12 - memset http://m.shnenglu.com/85940806/archive/2011/06/11/148505.htmlMike SongMike SongSat, 11 Jun 2011 13:32:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148505.htmlhttp://m.shnenglu.com/85940806/comments/148505.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148505.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148505.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148505.html/***
*char *memset(dst, val, count) - sets "count" bytes at "dst" to "val"
*
*Purpose:
*       Sets the first "count" bytes of the memory starting
*       at "dst" to the character value "val".
*
*Entry:
*       void *dst - pointer to memory to fill with val
*       int val   - value to put in dst bytes
*       size_t count - number of bytes of dst to fill
*
*Exit:
*       returns dst, with filled bytes
*
*Exceptions:
*
******************************************************************************
*/

void * __cdecl memset (
  
void *dst,
  
int val,
  size_t count
  )
{
  
void *start = dst;

  
while (count--) {
    
*(char *)dst = (char)val;
    dst 
= (char *)dst + 1;

  
return(start);
}


Mike Song 2011-06-11 21:32 鍙戣〃璇勮
]]>
11 - memcpyhttp://m.shnenglu.com/85940806/archive/2011/06/11/148504.htmlMike SongMike SongSat, 11 Jun 2011 13:30:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148504.htmlhttp://m.shnenglu.com/85940806/comments/148504.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148504.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148504.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148504.html/***
*memcpy - Copy source buffer to destination buffer
*
*Purpose:
*       memcpy() copies a source memory buffer to a destination memory buffer.
*       This routine does NOT recognize overlapping buffers, and thus can lead
*       to propogation.
*
*       For cases where propogation must be avoided, memmove() must be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl memcpy (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;
  
/*
  * copy from lower addresses to higher addresses
  
*/
  
while (count--) {
    
*(char *)dst = *(char *)src;
    dst 
= (char *)dst + 1;
    src 
= (char *)src + 1;
  }

  
return(ret);
}


Mike Song 2011-06-11 21:30 鍙戣〃璇勮
]]>
10 - struprhttp://m.shnenglu.com/85940806/archive/2011/06/11/148503.htmlMike SongMike SongSat, 11 Jun 2011 13:18:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148503.htmlhttp://m.shnenglu.com/85940806/comments/148503.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148503.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148503.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148503.htmlchar * __cdecl _strupr (  char * string  )
{
  
char *cp;       /* traverses string for C locale conversion */
  
for (cp = string*cp; ++cp)
  {
    
if ('a' <= *cp && *cp <= 'z')
      
*cp += 'A' - 'a';
  }
  
return(string);
/* C locale */


Mike Song 2011-06-11 21:18 鍙戣〃璇勮
]]>
9 - strchrhttp://m.shnenglu.com/85940806/archive/2011/06/11/148502.htmlMike SongMike SongSat, 11 Jun 2011 13:11:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148502.htmlhttp://m.shnenglu.com/85940806/comments/148502.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148502.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148502.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148502.html/***
*char *strchr(string, c) - search a string for a character
*
*Purpose:
*       Searches a string for a given character, which may be the
*       null character '\0'.
*
*Entry:
*       char *string - string to search in
*       char c - character to search for
*
*Exit:
*       returns pointer to the first occurence of c in string
*       returns NULL if c does not occur in string
*
*Exceptions:
*
******************************************************************************
*/

char * __cdecl strchr (
        
const char * string,
        
int ch
        )
{
        
while (*string && *string != (char)ch)
                
string++;

        
if (*string == (char)ch)
                
return((char *)string);
        
return(NULL);
}


Mike Song 2011-06-11 21:11 鍙戣〃璇勮
]]>
8 - strsethttp://m.shnenglu.com/85940806/archive/2011/06/11/148501.htmlMike SongMike SongSat, 11 Jun 2011 13:09:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/11/148501.htmlhttp://m.shnenglu.com/85940806/comments/148501.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/11/148501.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/148501.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/148501.html/***
*char *_strset(string, val) - sets all of string to val
*
*Purpose:
*       Sets all of characters in string (except the terminating '/0'
*       character) equal to val.
*
*
*Entry:
*       char *string - string to modify
*       char val - value to fill string with
*
*Exit:
*       returns string -- now filled with val's
*
*Uses:
*
*Exceptions:
*
******************************************************************************
*/

char * __cdecl _strset (
  
char * string,
  
int val
  )
{
  
char *start = string;

  
while (*string)
    
*string++ = (char)val;

  
return(start);
}


Mike Song 2011-06-11 21:09 鍙戣〃璇勮
]]>
7 - strduphttp://m.shnenglu.com/85940806/archive/2011/06/02/147986.htmlMike SongMike SongThu, 02 Jun 2011 15:16:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/02/147986.htmlhttp://m.shnenglu.com/85940806/comments/147986.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/02/147986.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147986.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147986.html/***
*char *_strdup(string) - duplicate string into malloc'd memory
*
*Purpose:
*       Allocates enough storage via malloc() for a copy of the
*       string, copies the string into the new memory, and returns
*       a pointer to it.
*
*Entry:
*       char *string - string to copy into new memory
*
*Exit:
*       returns a pointer to the newly allocated storage with the
*       string in it.
*
*       returns NULL if enough memory could not be allocated, or
*       string was NULL.
*
*Uses:
*
*Exceptions:
*
******************************************************************************
*/

char * __cdecl _strdup (
        
const char * string
        )
{
        
char *memory;

        
if (!string)
                
return(NULL);

        
if (memory = malloc(strlen(string+ 1))
                
return(strcpy(memory,string));

        
return(NULL);
}




Mike Song 2011-06-02 23:16 鍙戣〃璇勮
]]>
6 - strcathttp://m.shnenglu.com/85940806/archive/2011/06/02/147980.htmlMike SongMike SongThu, 02 Jun 2011 14:18:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/02/147980.htmlhttp://m.shnenglu.com/85940806/comments/147980.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/02/147980.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147980.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147980.html/***
*char *strcat(dst, src) - concatenate (append) one string to another
*
*Purpose:
*       Concatenates src onto the end of dest.  Assumes enough
*       space in dest.
*
*Entry:
*       char *dst - string to which "src" is to be appended
*       const char *src - string to be appended to the end of "dst"
*
*Exit:
*       The address of "dst"
*
*Exceptions:
*
******************************************************************************
*/

char * __cdecl strcat (
        
char * dst,
        
const char * src
        )
{
        
char * cp = dst; // 寰楀埌棣栧湴鍧, 鐒跺悗閬嶅巻鍒版渶鍚? 鍐峜opy

        
while*cp )
                cp
++;                   /* find end of dst */

        
while*cp++ = *src++ ) ;       /* Copy src to end of dst */

        
return( dst );                  /* return dst */

}

int _tmain(int argc, _TCHAR* argv[])

  
char s1[] = "abc";
  
char s2[] = "def";
  
char* p = my_strcat(s1, s2);

  
return 0;
}


Mike Song 2011-06-02 22:18 鍙戣〃璇勮
]]>
5 - strstrhttp://m.shnenglu.com/85940806/archive/2011/06/02/147978.htmlMike SongMike SongThu, 02 Jun 2011 14:07:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/02/147978.htmlhttp://m.shnenglu.com/85940806/comments/147978.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/02/147978.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147978.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147978.html/***
*char *strstr(string1, string2) - search for string2 in string1
*
*Purpose:
*       finds the first occurrence of string2 in string1
*
*Entry:
*       char *string1 - string to search in
*       char *string2 - string to search for
*
*Exit:
*       returns a pointer to the first occurrence of string2 in
*       string1, or NULL if string2 does not occur in string1
*
*Uses:
*
*Exceptions:
*
******************************************************************************
*/

char * __cdecl strstr (
        
const char * str1,
        
const char * str2
        )
{
        
char *cp = (char *) str1;
        
char *s1, *s2;

        
if ( !*str2 )
            
return((char *)str1);

        
while (*cp)
        {
                s1 
= cp;
                s2 
= (char *) str2;

                
while ( *s1 && *s2 && !(*s1-*s2) )
                        s1
++, s2++;

                
if (!*s2)
                        
return(cp);

                cp
++;
        }

        
return(NULL);

}

int _tmain(int argc, _TCHAR* argv[])
{
  
char* p1 = "abcde";
  
char* p2 = "cd";

  
char* p = my_strstr(p1, p2);

  
return 0;
}


Mike Song 2011-06-02 22:07 鍙戣〃璇勮
]]>
4 - strcmphttp://m.shnenglu.com/85940806/archive/2011/06/02/147977.htmlMike SongMike SongThu, 02 Jun 2011 13:49:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/02/147977.htmlhttp://m.shnenglu.com/85940806/comments/147977.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/02/147977.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147977.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147977.html/***
*strcmp - compare two strings, returning less than, equal to, or greater than
*
*Purpose:
*       STRCMP compares two strings and returns an integer
*       to indicate whether the first is less than the second, the two are
*       equal, or whether the first is greater than the second.
*
*       Comparison is done byte by byte on an UNSIGNED basis, which is to
*       say that Null (0) is less than any other character (1-255).
*
*Entry:
*       const char * src - string for left-hand side of comparison
*       const char * dst - string for right-hand side of comparison
*
*Exit:
*       returns -1 if src <  dst
*       returns  0 if src == dst
*       returns +1 if src >  dst
*
*Exceptions:
*
******************************************************************************
*/

int __cdecl strcmp (
        
const char * src,
        
const char * dst
        )
{
        
int ret = 0 ;

        
while! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
                
++src, ++dst;

        
if ( ret < 0 )
                ret 
= -1 ;
        
else if ( ret > 0 )
                ret 
= 1 ;

        
return( ret );
}

int _tmain(int argc, _TCHAR* argv[])
{
  
char* p1 = "abcde";
  
char* p2 = "abchd";

  
int i = my_strcmp(p1, p2);

  
return 0;
}


Mike Song 2011-06-02 21:49 鍙戣〃璇勮
]]>
3 - strlenhttp://m.shnenglu.com/85940806/archive/2011/06/02/147976.htmlMike SongMike SongThu, 02 Jun 2011 13:38:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/02/147976.htmlhttp://m.shnenglu.com/85940806/comments/147976.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/02/147976.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147976.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147976.html/***
*strlen - return the length of a null-terminated string
*
*Purpose:
*       Finds the length in bytes of the given string, not including
*       the final null character.
*
*Entry:
*       const char * str - string whose length is to be computed
*
*Exit:
*       length of the string "str", exclusive of the final null byte
*
*Exceptions:
*
******************************************************************************
*/

size_t __cdecl strlen ( 
const char * str  )
{
  
const char *eos = str;

  
while*eos++ ) ;

  
return( (int)(eos - str - 1) );
}

int _tmain(int argc, _TCHAR* argv[])
{
  
char str[] = "abcde";
  
int n = strlen(str);

  
return 0;
}


Mike Song 2011-06-02 21:38 鍙戣〃璇勮
]]>
2 - strcpyhttp://m.shnenglu.com/85940806/archive/2011/06/02/147957.htmlMike SongMike SongThu, 02 Jun 2011 08:40:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/02/147957.htmlhttp://m.shnenglu.com/85940806/comments/147957.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/02/147957.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147957.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147957.html/***
*char *strcpy(dst, src) - copy one string over another
*
*Purpose:
*       Copies the string src into the spot specified by
*       dest; assumes enough room.
*
*Entry:
*       char * dst - string over which "src" is to be copied
*       const char * src - string to be copied over "dst"
*
*Exit:
*       The address of "dst"
*
*Exceptions:
******************************************************************************
*/

char * __cdecl strcpy(char * dst, const char * src)
{
        
char * cp = dst;

        
while*cp++ = *src++ )
                ;               
/* Copy src over dst */

        
return( dst );
}

int _tmain(int argc, _TCHAR* argv[])
{
  
char* src = "abc";
  
char* dest = (char*)malloc(strlen(src)+1);
  memset(dest, 
0x00sizeof(strlen(src)+1));

  dest 
= strcpy(dest, src);

  free(dest);
  dest 
= NULL;

  
return 0;
}


Mike Song 2011-06-02 16:40 鍙戣〃璇勮
]]>
1 - strrevhttp://m.shnenglu.com/85940806/archive/2011/06/01/147903.htmlMike SongMike SongWed, 01 Jun 2011 15:12:00 GMThttp://m.shnenglu.com/85940806/archive/2011/06/01/147903.htmlhttp://m.shnenglu.com/85940806/comments/147903.htmlhttp://m.shnenglu.com/85940806/archive/2011/06/01/147903.html#Feedback0http://m.shnenglu.com/85940806/comments/commentRss/147903.htmlhttp://m.shnenglu.com/85940806/services/trackbacks/147903.html/***
*strrev.c - reverse a string in place
*
*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines _strrev() - reverse a string in place (not including
*       '\0' character)
*
******************************************************************************
*/

#include 
<cruntime.h>
#include 
<string.h>

/***
*char *_strrev(string) - reverse a string in place
*
*Purpose:
*       Reverses the order of characters in the string.  The terminating
*       null character remains in place.
*
*Entry:
*       char *string - string to reverse
*
*Exit:
*       returns string - now with reversed characters
*
*Exceptions:
*
******************************************************************************
*/

char * __cdecl _strrev (char * string)
{
        
// 姝ゆ紼嬪簭鐨剆tart/left/string 閮藉湪鍚屼竴鍧楀唴瀛樹腑, start璁板綍鐨勬槸璧峰鍦板潃,鏈彉鍔ㄨ繃
        
// left鍜宻tring 鐢變簬瑕佷氦鎹㈡暟鎹? 鎵浠ヤ細鏈夊彉鍖?/span>
        char *start = string;
        
char *left = string;
        
char ch;

        
while (*string++)                 /* find end of string */
                ;
        
string -= 2// 鎸囬拡鍚庨2, 寰楀埌鏈鍚庝竴涓瓧絎︾殑鎸囬拡鍦板潃.

        
// 姝ゆ閫昏緫灝辨槸 鍓嶅悗瀛楃浜ゆ崲, 姣斿 "abcde":
        
// 絎竴嬈″驚鐜? a 鍜?nbsp;e 浜ゆ崲鍚?nbsp;鍙樻垚ebcda, 
        
// 絎簩嬈″驚鐜痓鍜宒浜ゆ崲, 鍙樻垚edcba,
        
// 絎笁嬈$敱浜巐eft==string, 鏁呭驚鐜仠姝?
        while (left < string)
        {
                ch 
= *left; 
                
*left++ = *string// 姝ゅ鍙垎瑙d負涓ゆ鏇村ソ鐞嗚В: *left =*sting; left++; 鎶婂間粯緇?left, 鐒跺悗left鍚戝悗縐諱綅
                *string-- = ch;      // 鍚屼笂: *string = ch; string--; 鎶婂間粯緇?string, 鐒跺悗string鍚戝墠縐諱綅
        }

        
return(start);
}


鍙﹀涓縐嶅埄鐢╯trlen鍑芥暟鏉ュ緱鍒板瓧絎︿覆闀垮害鐨勬柟娉? 鍏跺師鐞嗚窡涓婇潰鐨勭浉鍚? 棣栧熬渚濇浜ゆ崲鍒頒腑闂翠負姝?
char* my_strrev(char* p)
{
  
int n = strlen(p);
  
int i = 0;
  
int j = 0;
  
char ch;

  
for (i = 0, j = n-1; i < j; i++, j--)
  {
    ch 
= p[i];
    p[i] 
= p[j];
    p[j]
=ch;
  }

  
return p;
}

int _tmain(int argc, _TCHAR* argv[])
{
  
// 姝ゅ涓嶈兘瀹氫箟涓篶har* p = "abcde";
  
// 鍥犱負鍦╯trrev閲岄潰瑕佷慨鏀筽鐨勫唴瀹?
  char p[] = "abcde"
  
char* p1 = strrev(p);
  
char* p2 = my_strrev(p);

  
return 0;
}


Mike Song 2011-06-01 23:12 鍙戣〃璇勮
]]>
曰曰摸天天摸人人看久久久| 精品久久人人爽天天玩人人妻| 日韩精品久久久肉伦网站| 久久国产免费观看精品3| 久久九九亚洲精品| 久久精品国产2020| 久久精品国产亚洲沈樵| 国产成人久久精品麻豆一区 | 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 97久久精品人妻人人搡人人玩| 青青久久精品国产免费看| 久久久噜噜噜久久中文福利| 久久夜色精品国产亚洲av| 伊人丁香狠狠色综合久久| 久久99精品国产99久久6男男| 亚洲精品国产美女久久久| 久久AV高潮AV无码AV| 亚洲乱码精品久久久久..| 尹人香蕉久久99天天拍| 亚洲国产精品综合久久网络| 伊人久久精品无码二区麻豆| 欧美亚洲国产精品久久久久| 思思久久好好热精品国产| 久久九九兔免费精品6| 69国产成人综合久久精品| 久久青青草原精品国产不卡| 国产午夜精品久久久久九九电影| 秋霞久久国产精品电影院| 国产成人无码精品久久久久免费 | 久久国产免费| 国产成人久久激情91| 2021国内久久精品| 青青热久久综合网伊人| 无码超乳爆乳中文字幕久久| 久久久久久一区国产精品| 久久91亚洲人成电影网站| 99久久精品免费看国产一区二区三区 | 久久婷婷五月综合色99啪ak | 久久亚洲国产精品123区| 国产精品无码久久久久久| 久久亚洲AV成人无码|