C 字符串连接细节

C 字符串连接细节,c,string,concatenation,stdout,C,String,Concatenation,Stdout,当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; } 当stri

当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;
}
当string2出现在string1中的指定位置时,两个字符串之间是否有连接的函数/通用方法

不,没有

您可以使用多种方法完成您正在尝试的任务。一种方法是使用
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;
}
#包括
#包括
无效插入安装(字符*str1,大小\u t位置,字符常量*str2)
{
尺寸1=标准长度(标准长度1);
尺寸2=标准长度(标准长度2);
尺寸i=0;
//转移str1的内容
对于(i=len1;i>=pos;--i)
{
str1[i+len2]=str1[i];
}
//现在从pos开始放置str2的内容
对于(i=0;i
当string2出现在string1中的指定位置时,两个字符串之间是否有连接的函数/通用方法

不,没有

您可以使用多种方法完成您正在尝试的任务。一种方法是使用
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;
}
#包括
#包括
无效插入安装(字符*str1,大小\u t位置,字符常量*str2)
{
尺寸1=标准长度(标准长度1);
尺寸2=标准长度(标准长度2);
尺寸i=0;
//转移str1的内容
对于(i=len1;i>=pos;--i)
{
str1[i+len2]=str1[i];
}
//现在从pos开始放置str2的内容
对于(i=0;i
没有函数可以执行您想要的操作。 与其让函数串接(这对它来说非常重要),不如让函数插入带有原型的短语。。。 字符*插入短语(字符*字符串,字符*短语,单词后的大小); 你的例子现在应该是

插入短语(str,“不要”,1)


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

没有函数可以执行您想要的操作。 与其让函数串接(这对它来说非常重要),不如让函数插入带有原型的短语。。。 字符*插入短语(字符*字符串,字符*短语,单词后的大小); 你的例子现在应该是

插入短语(str,“不要”,1)


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

啊,是的,谢谢。我建造这个来满足我的实际需要。啊,是的,谢谢。我建造这个来满足我的实际需要。