[英]c language strchr segmentation fault character replace
我需要将C字符串中所有出现的'&'替换为','。
我做到了并且有效
代码1:
char *val, *querydup;
.
.
.
val=strchr(querydup,'&');
while(val != NULL) {
*val=',';
val=strchr(querydup,'&');
}
为了变得“优雅”,我尝试了以下操作,但是这会导致段错误,甚至指针光标也损坏! 很奇怪,我在vmware vm内运行linux。
代码2:
while(val=strchr(querydup,'&') != NULL) {
*val=',';
}
那有什么问题呢?
您是否认为代码1“优雅”?...
问候。
这是运算符的优先级 ,请尝试
while((val=strchr(querydup,'&')) != NULL) {
*val=',';
}
也许一个更简单的解决方案是手动进行:
char *ptr = querydup;
while (*ptr) {
if (*ptr == '&') {
*ptr = ',';
}
ptr++;
}
这是更多的代码行,但它只通过字符串一次,其中strchr()的重复执行将多次通过字符串。
您正在为val分配布尔值。 您的代码等效于:
while(val = (strchr(querydup,'&') != NULL))
更改为:
while((val = strchr(querydup,'&')) != NULL)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.