字符串连接细节
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 之前对两个参数进行词法分析。
有没有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 之前对两个参数进行词法分析。