gpt4 book ai didi

c - Loop后输出错误是strcat引起的?

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

我有以下代码在循环中将字符串附加到另一个字符串。

代码

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

int main(void){
char src1[] = "name";
int i;
for (i=1;i<=5;i++){
strcat(src1,"opps");
printf("loop times %d\n",i);
}
printf("now src1 is:%s\n",src1);
return 0;
}

为了调试代码,我在代码中添加了 printf 语句并编译了它。当我运行时,我得到以下结果:

输出

循环次数 1循环次数 0循环时间 1886416641现在 src1 是:nameoppsoppsopps

我的问题是“为什么 printf 循环 1886416641 次?”此外,结果也不是我所期望的。有人可以为我澄清一下吗?

最佳答案

str1 只分配了 5 个字节,strcat 将越界访问,这可能会导致未定义的行为。

号码 1886416641 只是不小心得到的。

您必须为 str1 分配足够的内存才能获得正常结果。
示例:char src1[32] = "name";

关于c - Loop后输出错误是strcat引起的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32934891/

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