gpt4 book ai didi

c - 如何使用用户输入的结构填充动态数组的元素?

转载 作者:行者123 更新时间:2023-11-30 15:04:14 25 4
gpt4 key购买 nike

我的程序根据用户输入的大小动态分配一个数组。 (如果用户输入为“5”,则我的 prog 数组的大小为 5)。该数组的每个元素都应包含一个结构体。(该结构体包含一个名称和 10 个不同测试的点)。最后我想输出这些结构,如下所示:

a
1 2 3 4 5 6 7 8 9 10
b
4 5 3 2 3 7 8 9 11 12

我的问题是我不知道如何实现这一目标。我唯一能够实现的就是这个,使用下面提到的程序(我输入的最后一个数据改变了一切):

a
1 2 3 4 5 .... 10
b
1 2 3 4 5 .....10

我花了几个小时研究这个,我觉得我完全迷失了。

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

struct programming{

char name[30];
int partpoints[10];
};

int main(){

struct programming *prog;
int j,i,N;

printf("Please enter the total number of students: \n");
scanf("%d", &N);

prog=(struct programming*) malloc (N * sizeof(struct programming));

for(i=0;i<N;i++){
printf("Please enter the name of the student: \n");
scanf("%s",(prog+i)->name);
for(j=0;j<10;j++){
scanf("%d", (prog+j)->partpoints+j); //PROBLEM!!!!
}
}

printf("Name of students and their points: \n");
for(i=0;i<N;i++){
printf("%s\n", (prog+i)->name);
for(j=0;j<10;j++){
printf("%d\t",(prog+j)->partpoints[j]); //PROBLEM!!!!
}

putchar('\n');
}

return 0;
}

最佳答案

问题在于,在嵌套的 for 循环中,您使用 j 来索引 prog 而不是 i,并且您必须传递一个scanf 中指向 int 的指针:

for(i=0;i<N;i++){
printf("Please enter the name of the student: \n");
scanf("%s",(prog+i)->name);
for(j=0,j<10,j++){
printf("Please enter point %d: \n", j+1);
scanf("%d", &((prog+i)->partpoints+j)); // no more PROBLEM now
}

注意:您可能需要在 scanf 格式字符串中添加一个空格,以便它会跳过空格和 cr/lf:"%d" (我不是scanf 大师)。

关于c - 如何使用用户输入的结构填充动态数组的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363837/

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