70,020
社区成员




#undef __stpcpy
#undef stpcpy
#ifndef weak_alias
# define __stpcpy stpcpy
#endif
/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
char *
__stpcpy (dest, src)
char *dest;
const char *src;
{
char *d = dest;
const char *s = src;
/*没有考虑内存重叠的情况*/
do
*d++ = *s;
while (*s++ != '\0');
return d - 1;
}
#include <stdio.h>
#include <assert.h>
#include <string>
char* STRCPY(char* dest, const char* src){
assert((src != NULL)&&(dest != NULL));
char* pDest = dest;
do{
*dest = *src;
dest++,src++;
}while(*src != '\0');
return pDest;
}
int main(int argc, char** argv){
char szBuf[80] = "youdalfaoduandljfaa";
char szBuf1[80] = {0};
STRCPY(szBuf1, szBuf);
printf("%s\n%s\n", szBuf, szBuf1);
return 0;
}
这是一道比较经典的C笔试题,考点全在STRCPY函数里面,考点分为:
1、STRCPY必须返回char*
2、要有断言,对入参进行判断
3、copy循环体