gpt4 book ai didi

c - 初始化结构数组。为什么执行结果有冗余值?

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

例子:

声明结构:

struct table
{
char r1[6];
char r2[2];
char r3[6];
};

/* main */

int main()
{
struct table t[10];
int i;
f010_Initial (t);
for (i=0; i<10 ; i++)
{
printf ("%5s %5s %5s\n", t[i].r1,t[i].r2, t[i].r3);
}
getchar();
return 0;
}

/* initial struct */

void f010_Initial (struct table t[10])
{
int i;
for (i=0; i<10; i++)
{

strncpy (t[i].r1, "aaaaaa", 6);
t[i].r1[6] = '\0';

strncpy (t[i].r2, "aa", 2);
t[i].r1[2] = '\0';

strncpy (t[i].r3, "aaaaaa", 6);
t[i].r3[6] = '\0';
}
}

为什么执行是这样的:

啊啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊

最佳答案

当您声明 char r1[6]; 时,您不能这样做:t[i].r1[6] = '\0'; -你的数组有 6 个元素,所以你可以访问的最高元素索引是 5。否则就是注销你的数组的末尾,然后所有的赌注都关闭。你真的很幸运,它没有做比它做的更糟糕的事情!

关于c - 初始化结构数组。为什么执行结果有冗余值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16608725/

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