写法错误。
已帮你改好,并在win-tc下运行通过。
strcpy()函数中只有2个参数,同时由于这是个字符串完整复制,所以函数会自动复制字符串结尾标志符'\0',不用自己再写这个语句。但是字符串部分复制函数strncpy()不同,它包含3个参数同时不会自动添加字符串结尾标志符'\0',所以要自己加上。memset(str1,0x00,2); 这一句是多余的。同时上面说了,由于c/c++规定字符串结尾标志符为'\0',它虽然不计入字符串串长,但是要占内存空间,所以你要复制2个字符,必须用3个长度的字符串,故str1[2]改为str1[3]
#include
#include
#include
int main()
{
unsigned char *str;
unsigned char str1[3];/*注意这里*/
int len;
str="abcdefg";
len=strlen(str);
strncpy(str1,str+2,2);
str1[2]='\0';/*这一句必须要,但是使用strcpy()时不用*/
printf("%d\n",len);
printf("%s\n",str1);
system("pause");
return 0;
}