返回信息流程序1:
int main(void)
{
char *p=strdup("Transport: RTP/AVP;unicast;client_port=1212-1213");
char *buf1, *buf2 ;
buf2 = p ;
strsep( &buf2, ":") ;
printf("%s", buf2 ) ;
}
程序2:
int main(void)
{
char *p="Transport: RTP/AVP;unicast;client_port=1212-1213";
char *buf1, *buf2 ;
buf2 = p ;
strsep( &buf2, ":") ;
printf("%s", buf2 ) ;
}
结果是程序1可运行,程序2不可运行出现段错误。求解释。
这是一条镜像帖。来源:北邮人论坛 / cpp / #47137同步于 2010/12/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于strsep函数的
blc
2010/12/1镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
strsep()函数会在执行过程中修改第一个参数
而程序2中使用的是指向字符串常量的指针,是不能被修改的,所以出错了
第一个只是一个字符串常量的拷贝,是一个可修改的,所以正常
【 在 blc (sowhat) 的大作中提到: 】
: 程序1:
: int main(void)
: {
: ...................