首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言关于strcpy()函数的有关问题

2013-02-24 
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);

热点排行