gpt4 book ai didi

c - 哪个代码更好?我们如何理解这一点?为什么第二个代码中的最终打印功能有时会打印随机数?

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

我在这里很新..所以如果我的问题真的没有必要请原谅..但我认为答案会帮助我对自己有一些信心..这里有两个代码片段..一个是我在网站上得到的c4learn.com..

#include<stdio.h>   
int main()
{
char s1[100], s2[100];
int i;

printf("\nEnter the string :");
gets(s1);
i = 0;
while (s1[i] != '\0')
{
s2[i] = s1[i];
i++;
}
s2[i] = '\0';
printf("\nCopied String is %s ", s2);

return (0);
}

另一个是我自己写的..

#include<stdio.h>  

int main()
{
char s1[100], s2[100];
int i;
printf("\n Enter the string 1");
gets(s1);
printf("\n Enter the string2");
gets(s2);


for(i=0;i<100;i++)
{
if (s1[i]!='\0')
{
s2[i]=s1[i];
}
}
s2[i]='\0';

printf("\n Copied string is %s ", s2);

return(0);``
}

问题是在 dev c++ 上运行代码时。显示的最终 printf 在字符串末尾显示了一些随机字符。任何人都可以帮助我理解哪个代码更好吗?最初的问题是......如何在不使用任何内置库的情况下将一个字符串复制到另一个字符串?谢谢..

最佳答案

您的代码不太正确:

  • 如果您随后覆盖 s2,复制 s1,为什么要求用户输入 s2?
  • 您编写的 for 循环不会在 s1 结束时停止(我的意思是空终止符 '\0'),因此您还复制了 之后 s1 中剩余的所有字符'\0'。如果数组中的字符未初始化('\0' 之后的字符就是这种情况),它们当然可能会产生随机字符。

所以回答你的问题,第一个代码是正确的方法。

如果你想使用 for 循环,你可以这样做:

for (i = 0; i < 100; i++) {
s2[i] = s1[i];
if (s1[i] == '\0')
break;
}

关于c - 哪个代码更好?我们如何理解这一点?为什么第二个代码中的最终打印功能有时会打印随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39923274/

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