gpt4 book ai didi

c - 这个字符串连接函数有什么问题

转载 作者:行者123 更新时间:2023-11-30 18:27:57 25 4
gpt4 key购买 nike

为什么这段代码不能正常工作?这是 K&R 练习 5-3

char str[20]= "Hello world";
char str2[5] = "xxx";
int main(void) {
strcat(str, str2);
printf("%s", str);
return 0;
}

void strcat(char *s, char *a) {
while (*s++);
while (*s++ = *a++);
}

最佳答案

这是因为 while(*s++); 即使在退出到下一个语句之前遇到 NULL 字符串终止符,仍然会递增 s。尝试:

while (*s) {
s++;
}

这样当 s 变为 NULL 时,s 不会增加。这样,a 的第一个字符就可以覆盖 s 的 NULL 终止符。

后缀递增/递减具有高优先级,但操作数的实际递增或递减被延迟(在语句完成执行之前的某个时间完成)。所以在语句 y = x * z++; 中z 的当前值用于计算表达式(即 z++ 计算为 z),并且 z 仅在完成所有其他操作后递增 ( http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm )

关于c - 这个字符串连接函数有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51131804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com