在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,发送到功能。如果需要字符串,则很难 - 您需要将第三个字符复制到临时位置,并且当它返回时,将其重新更改。这都是假设字符串不是恒定的,并且该函数是同步