我正在讀取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並將其變爲無效的URI。 – paddy
可能的重複[爲什麼這個字符串反轉C代碼導致分段錯誤?](http://stackoverflow.com/questions/1614723/why-is-this-string-reversal-c-code-causing-a-segmentation -故障) – John3136