char * removeChar(char * str, char c){
int len = strlen(str);
int i = 0;
int j = 0;
char * copy = malloc(sizeof(char) * (len + 1));
while(i < len){
if(str[i] != c){
copy[j] = str[i];
j++;
i++;
}else{
i++;
}
}
if(strcmp(copy, str) != 0){
strcpy(str,copy);
}else{
printf("Error");
}
return copy;
}
int main(int argc, char * argv[]){
char str[] = "Input string";
char * input;
input = removeChar(str,'g');
printf("%s\n", input);
free(input);
return 0;
}
我不知道爲什麼每次我嘗試運行它時,它總是說未初始化的變量並粘在strcpy行和printf行中。爲什麼malloc不能使用strcpy?
基本上這個函數是取一個字符串和一個字符,並從字符串中移除該字符(因爲我正在學習malloc,所以我就這樣寫了這個函數)。
在我看來,在if(strcmp(copy,str)!= 0)塊結束後至少有兩行代碼丟失。請添加它們。 (你可以編輯你的問題 - 看到一個盒子裏的藍色「c」下的小灰色單詞「edit」,這是一個按鈕。是的,真的。) – zwol
我想你忘了把字符串的最後一個字節設置爲'NUL '('\ 0')。 – Alexander
我沒有得到那個警告,但另一個〜*警告C4715:'removeChar':並非所有的控制 路徑返回值*。但看到我不得不添加一個缺失的'}'也許我把它放在了錯誤的地方。 –