C语言关于strcpy()函数的有关问题
C语言关于strcpy()函数的问题#include stdio.h#include string.hint main(int argc, char *argv[]){ch
C语言关于strcpy()函数的问题
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *p;
char line[20]="string";
strcpy(p,line);
printf("%s\n",p);
return 0;
}
这样写编译通过,但运行失败,
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *p;
char *line="string";
strcpy(p,line);
printf("%s\n",p);
return 0;
}
这样写运行正常,第一种写法运行的时候有什么问题,为什么不能正常运行?
[解决办法]不管是否编译通过,运行与否,你上面两种写法都不正确。
p 必须分配空间后,才能 strcpy(p,....)
[解决办法]你定义的那个指针p,没有指向任何有效的内存地址(野指针),所以向他拷贝东西往哪里放?两种写法都是有问题的。可以让P指向一个有效的内存地址,比如:
char str[20];
char *p = str; // 让p指向数组str,strcpy时相当于向数组str中拷贝字符串
// 或者让p指向动态分配的内存地址 char *p = (char *)malloc(20);