我们可以在LoadRunner中的另一个字符串中的每个字符之前附加相同的字符串吗?
如果我提供的输入如下:
char *s1 = "Hello";
char *s2 = "\\x";
我想在输出中打印如下:
"\xH\xe\xl\xl\xo"
答案 0 :(得分:0)
类似的东西:
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
const char *s1 = "Hello";
const char *s2 = "\\x";
int s1_len = strlen(s1);
int s2_len = strlen(s2);
char *result, *p;
p = result = (char *)malloc(sizeof(char) * (s1_len + s1_len * s2_len + 1));
for (int i = 0; i < s1_len; i++) {
p = mempcpy(p, s2, s2_len);
*p++ = s1[i];
}
*p = '\0';
puts(result);
free(result);
return 0;
}
编译&amp;运行:
gcc test.c -o test -std=gnu99 && ./test
\xH\xe\xl\xl\xo
答案 1 :(得分:0)
一系列strcpy()
得到你需要的东西
size_t len1 = strlen(s1);
size_t len2 = strlen(s2);
char* res = malloc(len1 * (len2+1) + 1);
res[0] = '\0';
size_t pos = 0;
for (const char *p = s1; *p; ++p, pos += (len2+1)) {
// append s2 to the string
strcpy(&res[pos], s2);
// append the next character
strncpy(&res[pos+len2], p, 1);
// add the NUL
res[pos+len2+1] = '\0';
}
puts(res);
这可以通过使用strcat
的较少代码来完成,但这需要在每次调用时遍历字符串。