C-如何在不复制新字符串的情况下传递一部分字符串



在C中,说我有:

char *hash = argv[1];

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

如果您将相关的字符作为单个字符而不是字符串访问,则只需将字符串传递到该功能,并明确引用您想要的两个char。P>

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--

2的可能性,两者都涉及不良编码:

  • 更改功能以接受具有可选长度的字符串,因此它将仅使用前N个字符,然后发送带有长度2
  • 的原始字符串
  • 将第三个字符更改为null,发送到功能。如果需要字符串,则很难 - 您需要将第三个字符复制到临时位置,并且当它返回时,将其重新更改。这都是假设字符串不是恒定的,并且该函数是同步

相关内容

最新更新