【发布时间】:2015-01-30 00:15:33
【问题描述】:
我的目标是能够将成员输入到学生数据库的数组的每个结构中。我知道我的 for 循环在某种程度上是错误的,但我不知道如何修复它...输出采用名字,然后在不输入输入的情况下打印循环的其余部分。
显然问题在于我对 printf 和 scanf 的功能缺乏了解。但只是从我无知的角度来看,我不明白为什么它不起作用。
#include <stdlib.h>
#include <stdio.h>
typedef struct {
char *name;
char *surname;
char *UUN;
char *department;
char gender;
int age;
} student_t;
student_t findOldest(student_t *studentarr, int len) {
int i;
student_t max=*(studentarr+0);
for (i=1; i < len; i++) {
if((*(studentarr+i)).age > max.age)
max = *(studentarr+i);
}
return max;
}
int main() {
int i;
student_t result;
student_t stdt[6]={{"John","Bishop","s1234","Inf",'m',18},{"Lady","Cook","s2345","Eng",'f',21},{"James","Jackson","s33456","Eng",'m',17}};
student_t *p=&stdt[0];
for(i=3;i<6;i++){ /* This is where I'm stuck */
printf("\nFirst Name: ");
scanf("%s",stdt[i].name);
printf("\nSurname: ");
scanf("%s",stdt[i].surname);
printf("\nUUN: ");
scanf("%s",stdt[i].UUN);
printf("\nDepartment: ");
scanf("%s",stdt[i].department);
printf("\nGender (m/f): ");
scanf(" %c",&stdt[i].gender);
printf("\nAge: ");
scanf("%d",&stdt[i].age);
}
findOldest(p,6);
result = findOldest(p,6);
printf("\nThe student of oldest age:%s, %s, %s, %s, %c, %d\n",result.name,result.surname,result.UUN,result.department,result.gender,result.age);
return 0;
}
【问题讨论】:
-
如果您将 struct char* 成员声明为 char xyz[200](任意长度),它将起作用
-
您也没有在(大部分)
scanf()调用之间跳过空格(包括换行符)...
标签: c for-loop struct printf scanf