gpt4 book ai didi

c - 如何打印结构数组?

转载 作者:行者123 更新时间:2023-11-30 18:38:09 24 4
gpt4 key购买 nike

我试图从 2 个数组中打印结构中的值,但输出变得非常奇怪,我不知道为什么。

这是输出的内容:c1236545645bvabc123VABC123abc132

这应该输出:约翰47车沃尔沃abc123

出了什么问题?

struct person{
char name;
int age;
};
typedef struct person p;

struct vehicle{
char type;
char brand;
char regn;
char owner;
};
typedef struct vehicle v;

int main(){
p owner[1];
v Vehicle[1];

for(int i=0; i<1;i++){
printf("Name\n");
scanf("%s",&owner[i].name);
printf("Age\n");
scanf("%d",&owner[i].age);
printf("Type\n");
scanf("%s",&Vehicle[i].type);
printf("Brand\n");
scanf("%s",&Vehicle[i].brand);
printf("regn\n");
scanf("%s",&Vehicle[i].regn);


}

for(int j=0; j<1; j++){
printf("%s\n", &owner[j].name);
printf("%d\n", &owner[j].age);
printf("%s\n", &Vehicle[j].type);
printf("%s\n", &Vehicle[j].brand);
printf("%s\n", &Vehicle[j].regn);
}

}

最佳答案

问题是 char 应该是单个字符,例如 'a''B' '1' 等。所以你需要的是它们的数组。下面我任意选择32作为数组的长度

请注意,我从代码中的多个位置删除了 &,因为它现在使用数组而不是单个字符:

#include <stdio.h>

struct person {
char name[32];
int age;
};
typedef struct person p;

struct vehicle {
char type[32];
char brand[32];
char regn[32];
char owner[32];
};
typedef struct vehicle v;

int main(){
p owner[1];
v Vehicle[1];

for (int i = 0; i < 1; i++) {
printf("Name\n");
scanf("%s", owner[i].name);
printf("Age\n");
scanf("%d", &owner[i].age);
printf("Type\n");
scanf("%s", Vehicle[i].type);
printf("Brand\n");
scanf("%s", Vehicle[i].brand);
printf("regn\n");
scanf("%s", Vehicle[i].regn);
}

for (int j = 0; j < 1; j++) {
printf("%s\n", owner[j].name);
printf("%d\n", owner[j].age);
printf("%s\n", Vehicle[j].type);
printf("%s\n", Vehicle[j].brand);
printf("%s\n", Vehicle[j].regn);
}
}

另请注意,如果用户输入的字符串超出了 32 的存储空间,则此代码将导致未定义的行为,因为它不会对此进行检查。此外,如果用户在任何 scanf 中输入空格,都会导致问题。如果这对您很重要,这里有一个解决方案:How do you allow spaces to be entered using scanf?

关于c - 如何打印结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34734668/

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