0
您好,我对c编程非常陌生。我有以下一段代码,代码基本上通过终端从用户获取值并打印出值。所以我有一个get函数和打印函数。不知何故,当我输入学号后,程序停止并直接显示登记选项提示并输出姓名和ID。我尝试重新排列这些选项,然后运行。任何想法的家伙?在此先感谢无法在C中打印值C
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 80
struct Student {
char *name; // point to a name string
int id; // student number
char *enroll; // enrollment option: D or X
};
struct Student student1;
void getStudent(struct Student *s)
{
printf("Type the name of the student: ");
s->name = malloc(100); // assume name has less than 100 letters
fgets(s->name, 100, stdin);
printf("\nType the student numner: ");
scanf("%d", &(s->id));
printf("\nType the student enrollment option (D or X): ");
scanf("%c", (s->enroll)); // some bug here
return;
}
void printStudent(struct Student s)
{
char name[MAX_LEN];
char enroll[MAX_LEN];
int id;
s.id = id;
s.name = name;
s.enroll = enroll;
printf("Student Details: %d %s %s \n", s.id, s.name, s.enroll);
return;
}
int main(int argc, char *argv[]){
getStudent(&student1);
printStudent(student1);
return 0;
}
这是一个很好的时间来介绍自己调试 –
'的scanf( “%C”,(S->报名));'*调用不确定的行为* - 您还没有分配任何内存'登记'(或初始化指针) - 也许你打算宣布'登记'为'字符登记'(非指针) – UnholySheep
*它的工作* ..那么你的问题是什么? – minigeek