C - 如何传递字符串的一部分而不复制到新字符串?

时间:2018-02-20 06:28:14

标签: c

在C中,说我有:

char *hash = argv[1];

如何将hash的前两个字符传递给期望字符串作为参数的函数?最好不要创建由前2个字符组成的新字符串。

2 个答案:

答案 0 :(得分:0)

如果您将有问题的字符作为单个字符而不是字符串来访问,那么只需将字符串传递给函数,然后显式引用您想要的两个字符。

void printTwoChars(char *str) {
    char *charA, *charB;

    charA = &str[0];
    charB = &str[1];

    printf("--%c--%c--\n", *charA, *charB);
}

int main(void) {
    char hash[] = "hello world";

    printTwoChars(hash);
}

输出:

--h--e--

答案 1 :(得分:0)

我想到了两种可能性,它们都涉及不良编码:

  • 更改函数以接受具有可选长度的字符串,因此它将仅使用前n个字符,然后发送长度为2的原始字符串
  • 将第3个字符更改为null,发送给该函数。如果你需要字符串就更难了 - 你需要将第3个字符复制到临时位置,当它返回时将其更改回来。这都是假设字符串不是常量且函数是同步的