字符串连接细节

String concatenation specifics

有没有function/common两个字符串拼接的方法,而string2出现在string1的指定位置?

如果问题不够清楚,请看这个例子:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[100] = "I love Gyros";

    concatenate(&str[2], "dont ");

    printf(str);

    return 0;
}

输出:

I dont love Gyros

Is there any function/common method for concatenation between two string, while string2 appears in string1 in a specified place?

没有,没有。

您可以使用多种方法完成您正在尝试的事情。一种方法是使用 sprintf.

char str[100];
sprintf(str,"I %s love Gyros", "don't");

另一种方法是将 str 的内容向右移动所需的量,然后设置中间元素的值。

#include <stdio.h>
#include <string.h>

void insertInString(char* str1, size_t pos, char const* str2)
{
   size_t len1 = strlen(str1);
   size_t len2 = strlen(str2);
   size_t i = 0;

   // Shift the contents of str1
   for ( i = len1; i >= pos; --i )
   {
      str1[i+len2] = str1[i];
   }

   // Now place the contents of str2 starting from pos
   for ( i = 0; i < len2; ++i )
   {
      str1[i+pos] = str2[i];
   }
}

int main()
{
    char str[100] = "I love Gyros";
    insertInString(str, 2, "don't ");
    printf("%s\n", str);
    return 0;
}

没有您想要的功能。 与其让函数连接起来让它工作得很好,不如让函数 insert_phrase 带有原型...... char *insert_phrase(char *string,char *phrase,size_t after_word); 您的示例现在将显示为...

Insert_phrase(str,"don't ",1);

要使您的连接函数真正有用,需要在将 don't 插入 str 之前对两个参数进行词法分析。