在另一个字符串

时间:2016-09-19 06:30:43

标签: c arrays string pointers loadrunner

我们可以在LoadRunner中的另一个字符串中的每个字符之前附加相同的字符串吗?

如果我提供的输入如下:

char *s1 = "Hello";
char *s2 = "\\x";

我想在输出中打印如下: "\xH\xe\xl\xl\xo"

你能帮忙吗?

2 个答案:

答案 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的较少代码来完成,但这需要在每次调用时遍历字符串。