c语言strchr分段故障字符替换

use*_*292 1 c string segmentation-fault strchr

我需要在C字符串中将'&'的每个出现替换为','.

我做了这个,它的工作原理

代码1:

char *val, *querydup;
.
.
.
val=strchr(querydup,'&');
while(val != NULL) {
*val=',';
val=strchr(querydup,'&');
}
Run Code Online (Sandbox Code Playgroud)

为了"优雅"我尝试了以下,但它导致seg错误,甚至我的指针光标被破坏!很奇怪,我在vmware vm中运行linux.

代码2:

while(val=strchr(querydup,'&') != NULL) {
*val=',';
}
Run Code Online (Sandbox Code Playgroud)

那可能是什么错??

你认为代码1是"优雅的"吗?...

问候.

pmg*_*pmg 6

浮雕回答了你的主要问题.

我正在回答"优雅"部分:)

你一遍又一遍地检查相同的字符.

假设querydup"&&&&&&&&&&".在它进行了前几次更改后,",,,,,,&&&&"您仍然可以从头开始检查.

尝试重用val"优雅":)

val = strchr(val, '&');
Run Code Online (Sandbox Code Playgroud)