filtering a string in c
Given the input ~Zw~~"iE^L I should get !w~"iE^L inste开发者_如何学运维ad I am getting Zw~"iE^L
So it catch the ~~ just fine and replace it with ~ but I want to replace ~Z with !
Any ideas?
for (j = 0; j < dataCharCount; j++, k++)
{
if (inputData[j] == '~' && inputData[j + 1] == '~')
{
filteredInputData[k] = '~';
j++;
}
else if (inputData[j] == '~' && inputData[j + 1] == 'Z')
{
filteredInputData[k] = '!';
j++;
}
filteredInputData[k] = inputData[j];
}
} else {
filteredInputData[k] = inputData[j];
}
Without the else you're overwriting filteredInputData[k] after the if statements.
there is an else missing before the last ine of the function. you surely do not want to copy the input to the output (filteredInputData[k] = inputData[j];) after having performed the replacement.
The last statement in your loop overwrites the ~ or ! you wrote via your if statment body. The reason it looks like it works for the ~~ is that it's overwriting the ~ with another ~. In the ~Z case, you're overwriting your ! with the Z. Step through your code with a debugger - you'll see what's happening immediately.
加载中,请稍侯......
精彩评论