将char字符串插入另一个char字符串

Sj.*_*Sj. 3 c

好吧,所以我有一个char stringA和char stringB,我希望能够在点x处将stringB插入stringA.

char *stringA = "abcdef";
char *stringB = "123";
Run Code Online (Sandbox Code Playgroud)

与产品 "ab123cdef"

有谁知道如何做到这一点?提前致谢

min*_*gos 13

char * strA = "Blahblahblah", * strB = "123", strC[50];
int x = 4;
strncpy(strC, strA, x);
strC[x] = '\0';
strcat(strC, strB);
strcat(strC, strA + x);
printf("%s\n", strC);
Run Code Online (Sandbox Code Playgroud)

说明:

  1. 您声明要加入的两个字符串,以及要放入它们的第三个字符串.
  2. 你声明一个整数,告诉程序你希望将第二个字符串插入第一个字符串的字符数.
  3. strncpy函数将前x个字符复制到strC中.你必须在结尾添加null('\ 0')字符,否则你可能会得到垃圾.
  4. Strcat复制第二个字符串.
  5. 另一个strcat复制第一个字符串的剩余部分(strA + x).

希望有所帮助.

备注:记得使strC足够长以包含strA和strC,否则会产生分段错误.您可以通过将字符串声明为数组来完成此操作,就像在我的示例中一样.


Nik*_*chi 8

stringA和stringB都是指针 - 它们包含一块内存的起始地址.它们指向的内存包含连续的字符串:分别为"abcdef"和"123".由于字符串是连续的块存储器(意味着给定字符的存储位置是前一个字节后的一个字节),因此在不先移动某些字符的情况下,不能在字符串的中间插入更多字符.在你的情况下你甚至不能真正做到这一点,因为为每个字符串分配的内存量足够大,足以容纳JUST该字符串(忽略填充).

您将要做的是将字符串复制到另一个内存块,一个为此目的分配的内存块,然后复制它们,以便第二个字符串将x个字符开始到第一个字符串中.

其他几个SO用户已经发布了代码解决方案,但我认为你应该尝试自己找到确切的解决方案(希望我对正在发生的事情的高级解释会有所帮助).