微軟給的strcpy函數有好多潛在問題。時間問題,抽時間再詳析,直接上代碼。
#include <stdio.h>
#include <string.h>
#define GENERIC
void *MyStrcpy( void *dst, const void GENERIC *src, unsigned int len )
{
unsigned char *pDst;
const unsigned char GENERIC *pSrc;
pSrc = src;
pDst = dst;
while ( len-- )
*pDst++ = *pSrc++;
return ( pDst );
}
void main()
{
char s[]="123456789";
char d[]="123";
char s1[]="123456789";
char d1[]="123";
strcpy(d,s);
printf("s=%s d=%s\n",s,d);
MyStrcpy(d1,s1,3);
printf("d1=%s s1=%s\n",s1,d1);
printf("s=0X%08X\nd=0X%08X\ns1=0X%08X\nd1=0X%08X\nstrcpy=0X%08X\nprintf=0X%08X\n",s,d,s1,d1,strcpy,printf);
}
運行結果: