gpt4 book ai didi

c - 仅 1 个元素存储的数组超出其应有的数量

转载 作者:行者123 更新时间:2023-11-30 19:34:09 25 4
gpt4 key购买 nike

我的代码如下:

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

typedef struct{

char ID[1];
char Content[4];
}

int main(){

DATA z[1];
DATA t;
int c1, c2;

scanf("%c",z[1].ID);
scanf("%s",z[1].Content);

printf("\n");

c1=strlen(z[1].ID);
c2=strlen(z[1].Content);

t=z[1];

printf("t:\n");
printf("%s\n",t.ID);
printf("%s\n",t.Content);

printf("\n");

printf("z:\n");
printf("%s\n",z[1].ID);
printf("%s\n",z[1].Content);

printf("\n");

printf("Length of z's ID: %d.\n",c1);
printf("Length of z's Content: %d.\n",c2);
}

这就是我执行它时得到的结果:

8
3092

t:
83092
3092

z:
83092
3092

Length of z's ID: 5.
Length of z's Content: 4.

我不知道为什么 ID 应该只有 1 个元素却有超过 1 个元素。请帮忙,因为我需要为我正在开发的项目解决这个问题。谢谢。

最佳答案

我认为有几个问题。

首先,您在 z 上使用索引 1,其长度为 1。您应该使用索引 0。

其次,使用 %s 打印 ID,它需要一个以 null 结尾的字符数组。您的角色 ID 不是以 null 结尾的,因此它读取的内容比您预期的要多(它在内容中继续存在)。请注意,内容实际上是以 null 结尾的,因为您使用了 %s 而不是 %c

尝试将 printf("%s\n",t.ID); 更改为 printf("%c\n",t.ID);

编辑:我发现您在长度为 4 的数组中存储了 5 个字符(4 个字符和空终止符)。正如 @David Bowling 建议的那样,您应该使用 %3s 或至少使用更大的大小大批。感谢@David Bowling 指出了这一点!

请注意,我还没有对此进行测试,因为您的示例代码仍然无法工作。

关于c - 仅 1 个元素存储的数组超出其应有的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331703/

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