当前位置: 技术问答>linux和unix
关于strcat()函数
来源: 互联网 发布时间:2015-03-10
本文导语: 在linux系统上,我用c语言编一个小程序: main() { char *p="/mnt/usb"; strcat(p,"kk"); printf("p is %s.n",p); } 我想让输出的结果是/mnt/usb/kk,可是运行的结果却是segmatation fault.为什么?请指教。 | ...
在linux系统上,我用c语言编一个小程序:
main()
{
char *p="/mnt/usb";
strcat(p,"kk");
printf("p is %s.n",p);
}
我想让输出的结果是/mnt/usb/kk,可是运行的结果却是segmatation fault.为什么?请指教。
main()
{
char *p="/mnt/usb";
strcat(p,"kk");
printf("p is %s.n",p);
}
我想让输出的结果是/mnt/usb/kk,可是运行的结果却是segmatation fault.为什么?请指教。
|
问题出在你应该是用p[]="/mnt/usb"而不是*p="/mnt/usb",这样p是在栈里
如果如你那样,p是在堆里.具体分析明天再给你搞吧,今天有点困,呵呵
如果如你那样,p是在堆里.具体分析明天再给你搞吧,今天有点困,呵呵
|
出错的原因是你没有为目标串分配空间,另外调用strcat函数时要保证目标串有足够的可以容纳目标串与源串连接起来的整个串的长度,别忘了,最后还有一个''
代码如下:
#include
#include
int main()
{
char p[12] = "/mnt/usb/";
strcat(p,"kk");
printf("p is %s.n",p);
return 0;
}
代码如下:
#include
#include
int main()
{
char p[12] = "/mnt/usb/";
strcat(p,"kk");
printf("p is %s.n",p);
return 0;
}