【发布时间】:2016-12-13 01:05:40
【问题描述】:
我正在读取一个 URL(它是字符串)并搜索一个模式(/ 字符的连续出现)。如果我找到一个匹配的模式,我想用一个 / 替换它,并照原样复制其余的字符。例如:如果输入字符串是http://www.yahoo.com/,我需要通过删除额外的/ 来生成输出http:/www.yahoo.com/,因为该字符连续出现两次。
这是程序:
int main() {
int i, j;
bool found = false;
unsigned char *str = "http://www.yahoo.com/";
int len = strlen(str);
for (i = 0; i < len - 1; i++) {
if ((str[i] == '/') && (str[i + 1] == '/')) {
found = true;
break;
}
}
if (found) {
for (j = i + 1; j <= (len - i - 2); j++) {
str[j] = str[j + 1];
}
}
return 0;
}
但是这个程序正在产生一个分段错误。这段代码的问题在哪里?知道如何解决吗?有任何替代的简单实现吗?
【问题讨论】:
-
@tinga 您不能更改字符串文字。还有标准函数 strstr 可以帮助快速找到字符串“//”
-
这是一个奇怪的例子,把一个有效的URI变成一个无效的。