gpt4 book ai didi

你能解释一下这个 C 程序的输出吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:10 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>

main() {
int i = 0, j = 0;
char ch[] = { "chicken is good" };
char str[100];
while ((str[i++] = ch[j++]) != '\0') {
if (i == strlen(str))
break;
}
printf("%s", str);
}

我想使用 while 循环将字符串 "chicken is good"ch 复制到 str .但是当我打印 str 时,输出显示 "chi"。它只打印字符串的一部分。我的条件有问题吗?

我使用 Dev c++ 作为我的 IDE,我的编译器版本是 gcc 4.9.2。而且我还是编程新手。

最佳答案

语句 if (i == strlen(str)) break; 是无用的并且具有未定义的行为,因为 str 尚未以 null 终止。

注意你的程序还有其他问题:

  • 您必须将main 函数的返回值指定为int。您使用的是过时的语法。
  • 您不需要为源数组和目标数组使用单独的索引变量ij。它们始终具有相同的值。
  • 您应该在消息末尾打印一个换行符。
  • 为了良好的风格,您应该在 main() 结束时返回 0

这是一个更简单的版本:

#include <stdio.h>

int main(void) {
int i;
char ch[] = "chicken is good";
char str[100];

for (i = 0; (str[i] = ch[i]) != '\0'; i++) {
continue;
}
printf("%s\n", str);
return 0;
}

关于你能解释一下这个 C 程序的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817832/

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