【问题标题】:String concatenation specifics [duplicate]字符串连接细节[重复]
【发布时间】:2015-01-20 16:52:30
【问题描述】:

有没有什么函数/常用方法可以连接两个字符串,而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

【问题讨论】:

    标签: c string concatenation stdout


    【解决方案1】:

    有没有什么函数/常用方法可以连接两个字符串,而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;
    }
    

    【讨论】:

    • 啊,是的,谢谢。我构建了这个以满足我的实际需要。
    【解决方案2】:

    没有功能可以做你想做的事。 与其让函数连接起来,让它正常工作并不是微不足道的,不如让函数 insert_phrase 和原型...... char *insert_phrase(char *string,char *phrase,size_t after_word); 您的示例现在将显示为...

    Insert_phrase(str,"不要",1);

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

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 2015-08-23
      • 2020-12-30
      • 2015-07-31
      • 2013-07-21
      • 1970-01-01
      • 2013-09-14
      • 2013-11-30
      • 2013-09-26
      相关资源
      最近更新 更多