strcpy用法
strcpy的作用是将一个字符串的内容复制到另外一个字符串中,覆盖原有的内容。
char* strcpy(char* destination,const char* source);
常见的例程有:
将字符数组里的内容复制到字符数组里。
int main(int argc, const char * argv[]) {
// insert code here...
char a[128] = "1234";
char b[128] = "abcd";
strcpy(a, b);
printf("%s\n",a);
return 0;
}
将字符串常量里的内容复制到字符数组里。
int main(int argc, const char * argv[]) {
// insert code here...
char a[128] = "1234";
char *b = "abcd";
strcpy(a, b);
printf("%s\n",a);
return 0;
}
需要注意的是,在c++中char *p这样的变量是存放在常量区的,实际上在c++11之后以上的代码应该这样写才不会有warning:
int main(int argc, const char * argv[]) {
// insert code here...
char a[128] = "1234";
const char *b = "abcd";
strcpy(a, b);
printf("%s\n",a);
return 0;
}
相关坑点
strcpy并不是非常的神奇,并不是一个能随便用的函数。
目标字符串空间要足够
int main(int argc, const char * argv[]) {
// insert code here...
char a[2] = "";
char b[128] = "abcdefghi";
strcpy(a, b);
printf("%s\n",a);
return 0;
}
以上代码中目标字符串只有2个char类型空间,直接复制过去会导致数据溢出。
目标字符串空间要可变
int main(int argc, const char * argv[]) {
// insert code here...
char *a = "";
char b[128] = "abcdefghi";
strcpy(a, b);
printf("%s\n",a);
return 0;
}
以上代码试图将字符串拷贝到char *a这种变量中,但是前面我们已经提到,char *a其实是const char *a类型,属于常量,常量是不可以被二次赋值的。