现在我可以用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