現在我可以用nonchalant
替換給定字符串中的indifferent
這個詞,但是我需要使此函數具有動態性,因此indifferent
可以用任何單詞替換。我知道我需要使用malloc來創建一個新的數組,這個數組將會保留我的原始字符串,但是對於如何使用malloc還沒有很好的理解,請解釋如何在這種情況下正確使用malloc。謝謝。使用malloc替換字符串中子字符串的C函數 - 無字符串函數
#include <stdio.h>
#include <stdlib.h>
int findPosition(char string[], char sub[]) {
int i = 0;
int j = 0;
int f = 0;
for (i = 0; string[i] != '\0'; i++) {
if (sub[j] == string[i]) {
if (sub[j + 1] == '\0') {
f = 1;
break;
}
j++;
} else
j = 0;
}
if (f == 1) {
return i - j;
}
return -1;
}
int findLength(char sub[]) {
int i = 0;
for (i = 0; sub[i] != '\0'; i++) {
}
return i;
};
void replaceWord(char string[], char sub[], char replace[]) {
int i = 0;
int j = 0;
int p = findPosition(string, sub);
int l = findLength(sub);
int k = p + l - 1;
for (i = p; i < k; i++) {
string[i] = replace[j];
j++;
}
while(string[k] != '\0') {
string[k] = string[k + 1];
k++;
}
}
int main(int argc, const char *argv[]) {
char stringArray[120] = "\"Mr.Fay, is this going to be a battle of wits? \""
"\t\"If it is,\" was the indifferent retort, \""
"you have come unarmed!\"";
replaceWord(stringArray, "indifferent", "nonchalant");
int i = 0;
while (stringArray[i] != '\0') {
printf("%c", stringArray[i]);
i++;
}
return 0;
};
的'的malloc()'函數無關字符串替換;它所做的只是分配內存。你將它們混合在一起意味着你沒有做足夠的工作來將問題分解成更小,可管理的(明確定義的)任務。從鍵盤退後一步,考慮一下你的問題(也許用一張白紙和一支鉛筆),分解它並組織自己 - 對於你來說,這遠比任何人的迴應要好得多。 – mah