锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本va午夜在线电影,久久日韩精品,欧美精品在线一区二区三区http://www.shnenglu.com/85940806/archive/2011/06/11/148508.htmlMike SongMike SongSat, 11 Jun 2011 14:11:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.htmlhttp://www.shnenglu.com/85940806/comments/148508.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148508.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148507.htmlMike SongMike SongSat, 11 Jun 2011 14:09:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.htmlhttp://www.shnenglu.com/85940806/comments/148507.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148507.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148506.htmlMike SongMike SongSat, 11 Jun 2011 13:52:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.htmlhttp://www.shnenglu.com/85940806/comments/148506.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148506.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148505.htmlMike SongMike SongSat, 11 Jun 2011 13:32:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148505.htmlhttp://www.shnenglu.com/85940806/comments/148505.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148505.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148505.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148504.htmlMike SongMike SongSat, 11 Jun 2011 13:30:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148504.htmlhttp://www.shnenglu.com/85940806/comments/148504.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148504.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148504.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148503.htmlMike SongMike SongSat, 11 Jun 2011 13:18:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148503.htmlhttp://www.shnenglu.com/85940806/comments/148503.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148503.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148503.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148502.htmlMike SongMike SongSat, 11 Jun 2011 13:11:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148502.htmlhttp://www.shnenglu.com/85940806/comments/148502.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148502.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148502.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/11/148501.htmlMike SongMike SongSat, 11 Jun 2011 13:09:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148501.htmlhttp://www.shnenglu.com/85940806/comments/148501.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148501.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148501.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/02/147986.htmlMike SongMike SongThu, 02 Jun 2011 15:16:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/02/147986.htmlhttp://www.shnenglu.com/85940806/comments/147986.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/02/147986.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147986.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/02/147980.htmlMike SongMike SongThu, 02 Jun 2011 14:18:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/02/147980.htmlhttp://www.shnenglu.com/85940806/comments/147980.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/02/147980.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147980.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/02/147978.htmlMike SongMike SongThu, 02 Jun 2011 14:07:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/02/147978.htmlhttp://www.shnenglu.com/85940806/comments/147978.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/02/147978.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147978.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/02/147977.htmlMike SongMike SongThu, 02 Jun 2011 13:49:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/02/147977.htmlhttp://www.shnenglu.com/85940806/comments/147977.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/02/147977.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147977.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/02/147976.htmlMike SongMike SongThu, 02 Jun 2011 13:38:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/02/147976.htmlhttp://www.shnenglu.com/85940806/comments/147976.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/02/147976.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147976.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/02/147957.htmlMike SongMike SongThu, 02 Jun 2011 08:40:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/02/147957.htmlhttp://www.shnenglu.com/85940806/comments/147957.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/02/147957.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147957.htmlhttp://www.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://www.shnenglu.com/85940806/archive/2011/06/01/147903.htmlMike SongMike SongWed, 01 Jun 2011 15:12:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/01/147903.htmlhttp://www.shnenglu.com/85940806/comments/147903.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/01/147903.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/147903.htmlhttp://www.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 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美永久精品| 欧美日韩一区二区视频在线观看| 久久久人成影片一区二区三区观看| 91久久夜色精品国产九色| 精品91在线| 在线视频成人| 亚洲国产美女| 一本色道久久综合亚洲二区三区| 99视频精品免费观看| 日韩视频在线永久播放| 99国产精品私拍| 午夜精品免费在线| 久久一区欧美| 亚洲国产精品毛片| 欧美国产视频日韩| 亚洲国产日韩一区| 亚洲深夜福利网站| 久久久久91| 欧美另类视频| 国产麻豆精品theporn| 精品999成人| 日韩视频在线一区| 欧美在线看片| 欧美激情精品久久久久| 一区二区高清在线观看| 欧美一区日韩一区| 欧美黄色片免费观看| 国产精品私房写真福利视频| 在线观看日韩一区| 亚洲自拍偷拍色片视频| 久久婷婷国产综合尤物精品| 亚洲精品日韩欧美| 久久精品国产99| 国产精品大片wwwwww| 亚洲国产片色| 久久精品欧美| 99国产精品国产精品毛片| 久久久久久久国产| 国产精品区一区| 亚洲激情女人| 久久这里有精品视频| 亚洲图片自拍偷拍| 欧美v国产在线一区二区三区| 国产区在线观看成人精品| 欧美激情一区二区三区| 国产精品高精视频免费| 亚洲国产三级网| 欧美一区国产二区| 亚洲欧洲另类| 久久综合网hezyo| 国产精品一区二区三区成人| 日韩一级大片在线| 亚洲大片av| 美女任你摸久久| 国模私拍视频一区| 久久国产精品一区二区三区| 中文在线不卡| 欧美丝袜第一区| 亚洲国产欧美日韩| 免播放器亚洲一区| 久久精品伊人| 国色天香一区二区| 久久久久久高潮国产精品视| 亚洲欧美一区二区激情| 国产精品一区视频| 亚洲欧美久久| 亚洲午夜成aⅴ人片| 国产精品大片| 午夜伦欧美伦电影理论片| 亚洲午夜视频在线| 国产欧美一区在线| 久久久蜜桃一区二区人| 久久久精品一品道一区| 亚洲国产一成人久久精品| 欧美国产综合视频| 欧美精品一区二区三区在线播放| 亚洲免费观看在线视频| 亚洲人精品午夜| 欧美午夜精品久久久久久久| 亚洲在线观看视频网站| 亚洲在线视频一区| 伊人影院久久| 亚洲韩国日本中文字幕| 欧美视频一区| 久久精品首页| 老司机午夜精品视频在线观看| 亚洲国内精品| 一区二区三区高清| 国产精品高清在线观看| 翔田千里一区二区| 久久一区中文字幕| 亚洲一区二区三区激情| 欧美一级午夜免费电影| 亚洲欧洲一区| 午夜精品成人在线| 亚洲欧洲另类国产综合| 亚洲性视频网站| 亚洲国产欧美国产综合一区| 一区二区三区欧美在线观看| 国产欧美日韩精品a在线观看| 可以看av的网站久久看| 欧美日韩精品免费观看| 久久久欧美精品sm网站| 欧美激情综合网| 久久精品国产96久久久香蕉| 亚洲三级国产| 午夜在线精品偷拍| 亚洲国产专区校园欧美| 亚洲天堂免费在线观看视频| 亚洲国产精品久久久| 中国av一区| 亚洲精品免费在线| 欧美一区二区视频在线| 在线亚洲高清视频| 开心色5月久久精品| 午夜影视日本亚洲欧洲精品| 能在线观看的日韩av| 亚洲一区二区三区四区在线观看| 久久精品日韩欧美| 午夜精品久久久久久99热软件| 另类av一区二区| 欧美一级片在线播放| 欧美日韩123| 欧美国产日本在线| 国产亚洲精品自拍| 亚洲一区二区三区高清 | 韩日欧美一区二区| 一本大道久久a久久精品综合| 亚洲第一在线综合网站| 欧美一区二区三区日韩视频| 亚洲视频一区二区免费在线观看| 老司机精品视频网站| 久久一区二区三区超碰国产精品| 国产精品日韩一区二区三区| 一区二区三区欧美日韩| 在线亚洲一区观看| 欧美日本一区| 亚洲人被黑人高潮完整版| 永久91嫩草亚洲精品人人| 欧美一区二区三区免费视| 亚洲欧美一区二区激情| 国产精品高潮呻吟久久| 在线亚洲观看| 亚洲欧美日韩一区在线| 欧美三级欧美一级| 日韩亚洲在线观看| 亚洲一二三区精品| 欧美性猛交99久久久久99按摩| 日韩午夜视频在线观看| 亚洲欧美国产一区二区三区| 欧美欧美全黄| aa国产精品| 香蕉国产精品偷在线观看不卡| 欧美亚一区二区| 亚洲一区不卡| 久久xxxx精品视频| 依依成人综合视频| 欧美日韩成人综合在线一区二区 | 亚洲毛片网站| 欧美精品在线网站| 亚洲精品极品| 亚洲自拍偷拍色片视频| 国产精品揄拍500视频| 欧美一区二区三区视频免费| 久久婷婷蜜乳一本欲蜜臀| 亚洲成人在线| 欧美日韩国产一区精品一区| 一区二区三区色| 久久精品成人一区二区三区| 在线观看亚洲精品视频| 亚洲国产成人av在线| 欧美精选在线| 99日韩精品| 久久人人爽人人爽| 亚洲伦理在线| 国产欧美精品在线观看| 模特精品裸拍一区| 亚洲一区三区视频在线观看| 蜜桃av久久久亚洲精品| 亚洲精品网站在线播放gif| 欧美午夜国产| 免费高清在线一区| 亚洲一区二区三区四区中文| 久久免费国产精品1| 在线视频精品一| 一区二区三区在线免费视频| 欧美日韩成人在线| 久久国产手机看片| 一本一本久久a久久精品综合麻豆| 久久久亚洲国产天美传媒修理工| 日韩一区二区高清| 激情久久中文字幕| 欧美午夜精品理论片a级按摩| 久久久噜噜噜久久中文字免| 一本久久综合| 亚洲精品乱码久久久久久| 久久婷婷国产综合精品青草| 亚洲综合色丁香婷婷六月图片| 亚洲日本欧美| 在线精品视频一区二区|