我必须在给定的文本(**字符串)中创建一个函数,用另一个单词(y)替换每个单词(x)。我可以直接在给定的文本中替换它们吗?或者我应该制作一个新阵列并在那里进行替换?但是不知道如何继续。 我写的代码是:
void operation_2(char x[100], char y[100], char **string, int N)
{
int len = 0;
char *word;
char s[12] = " .,?!\"';:";
char **newstring = (char **)malloc(N * sizeof(char *));
for (i = 0; i<= N; i++) {
word = strtok(string[i], s);
while (word != NULL) {
if (strcmp(word, x) == 0) {
len = strlen(string[i]) - strlen(x) + strlen(y);
newstring[i] = (char *)malloc((len + 1) * sizeof(char));
答案 0 :(得分:1)
如果你创建一个新字符串,它将能够将任何字符串(字符串文字,堆栈上的数组,静态数组,堆上的数组)作为输入,但它不会作为内存高效。
如果您希望获得最大的内存效率,那么您可以就地修改目标字符串,但是根据输入字符串的存储位置,您将受到限制。
realloc
它(收缩它或扩展它)如果您决定修改字符串,memmove
函数可能会派上用场。
但请记住:
strtok