好吧,所以我有一个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)
说明:
希望有所帮助.
备注:记得使strC足够长以包含strA和strC,否则会产生分段错误.您可以通过将字符串声明为数组来完成此操作,就像在我的示例中一样.
stringA和stringB都是指针 - 它们包含一块内存的起始地址.它们指向的内存包含连续的字符串:分别为"abcdef"和"123".由于字符串是连续的块存储器(意味着给定字符的存储位置是前一个字节后的一个字节),因此在不先移动某些字符的情况下,不能在字符串的中间插入更多字符.在你的情况下你甚至不能真正做到这一点,因为为每个字符串分配的内存量足够大,足以容纳JUST该字符串(忽略填充).
您将要做的是将字符串复制到另一个内存块,一个为此目的分配的内存块,然后复制它们,以便第二个字符串将x个字符开始到第一个字符串中.
其他几个SO用户已经发布了代码解决方案,但我认为你应该尝试自己找到确切的解决方案(希望我对正在发生的事情的高级解释会有所帮助).