user-0 提问: 求助！！！改了N小时还是出了一些问题

回复:
user: user-1
content: 引用 8 楼 Rhinedusk 的回复:引用 7楼user-1 的回复:[quote=引用 6 楼 Rhinedusk 的回复:] [quote=引用 4楼user-1 的回复:][quote=引用 2 楼 Rhinedusk 的回复:] [quote=引用 1楼user-1 的回复:]scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了谢谢！不过其他的函数还是会崩  发下你改好的代码，我帮你看一下[/quote]已发[/quote]  你的input函数里的p1没有初始化就在用了  另外  scanf("%s",&student->Name);  这句不用 &  ， Name本身是自符数组，Name本身已经算是地址了[/quote]要怎么改正呢[/quote]  这个要看你自己写程序的思路，我没细看你程序要做什么  while(p1->StudentID<student->StudentID&&p1->next!=NULL)  这一句中， p1没有初始化，也就是说他只是一个指针，你还没为他分配内存，就把他拿来用了

user: user-0
content: 引用 7楼user-1 的回复:引用 6 楼 Rhinedusk 的回复:[quote=引用 4楼user-1 的回复:][quote=引用 2 楼 Rhinedusk 的回复:] [quote=引用 1楼user-1 的回复:]scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了谢谢！不过其他的函数还是会崩  发下你改好的代码，我帮你看一下[/quote]已发[/quote]  你的input函数里的p1没有初始化就在用了  另外  scanf("%s",&student->Name);  这句不用 &  ， Name本身是自符数组，Name本身已经算是地址了[/quote]要怎么改正呢

user: user-1
content: 引用 6 楼 Rhinedusk 的回复:引用 4楼user-1 的回复:[quote=引用 2 楼 Rhinedusk 的回复:] [quote=引用 1楼user-1 的回复:]scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了谢谢！不过其他的函数还是会崩  发下你改好的代码，我帮你看一下[/quote]已发[/quote]  你的input函数里的p1没有初始化就在用了  另外  scanf("%s",&student->Name);  这句不用 &  ， Name本身是自符数组，Name本身已经算是地址了

user: user-0
content: 引用 4楼user-1 的回复:引用 2 楼 Rhinedusk 的回复:[quote=引用 1楼user-1 的回复:]scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了谢谢！不过其他的函数还是会崩  发下你改好的代码，我帮你看一下[/quote]已发

user: user-0
content: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #define LEN sizeof(Student) #include <time.h>   typedef struct SIS { //结构体的声明 	long StudentID;    //学号 	char Name[20];  //姓名 	char Sex[10];//性别 	int Age;//年龄 	char TOE[30] ;//Time of Enrollment入学日期 	float GPA;//（加权平均） 	char PhoneNo[100]; //电话号码 	char MailingAddress[100];//邮箱 	struct SIS *next;//指向下一个结构体的指针 } Student;  Student *head;   /////////////////////声明函数/////////////////////// void wellcome();//欢迎界面 void start();//开始界面 int menu();//菜单 int input();//输入/插入 int del();//删除 int search ();//查找 int ALL();//显示全部 ///////////////////////////////////////////////////  void wellcome() { //欢迎界面 	time_t rawtime; 	struct tm * timeinfo; 	time ( &rawtime ); 	timeinfo = localtime ( &rawtime );   	printf("*************************************************\n"); 	printf("*\t\t学生信息管理系统\t\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t\t\tLAB 8\t\t\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t            莱茵出品\t\t        *\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t\t\t\t2.33.ver\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*************************************************\n"); 	printf("%s", asctime (timeinfo)); 	printf("Please Press Enter to continue……");  }   void start() { //开始界面 	int a=0; 	int b=0; 	int A=15080121; 	getchar(); 	system("cls"); 	printf("\n\n\n"); 	printf("\t\t学生信息管理系统\n\n\n"); 	printf("\t\t\t2.33.Ver\n\n\n"); 	getchar(); 	system("cls"); 	/*	printf("\t\t请输入用户名和密码，按下Enter继续\n\n\n"); 		printf("\tAdmin:"); 		scanf("%d",&a); 		printf("\n"); 		printf("\tPassword:"); 		scanf("%d",&b); 		if(a==A&&b==A) { 			getchar(); 			system("cls"); 		} else { 			printf("\t\t\t您没有足够的权限！！！！！\nPlease Press Enter to EXIT……"); 			getchar(); 			exit(0); 		}*/ }  int menu() {//菜单 	int shuru=0; 	printf("\n\n\n"); 	printf("\t\t （1）Create a student list\n"); 	printf("\t\t （2）Insert a student\n");//(to the sorted array or the sorted linked list ) 	printf("\t\t （3）Delete a student\n"); 	printf("\t\t （4）Search a student\n"); 	printf("\t\t （5）Display all students\n"); 	printf("\t\t （6）exit\n"); 	printf("\t\t请选择功能:"); 	scanf("%d",&shuru); 	return shuru;  }      int input() {//输入、插入 	Student *p1,*p2; 	Student *student; 	char a = 'y'; 	head = p2 = p1 ;  	system("cls");  	student = (Student*) malloc (LEN); 	printf("\t请按照要求输入\n"); 	while(a=='y'||a=='Y') { 		p2=p1=head; 		printf("\tStudentID："); 		scanf("%ld",&student->StudentID); 		printf("\t"); 		printf("Name："); 		scanf("%s",&student->Name); 		printf("\t"); 		printf("Sex："); 		scanf("%s",&student->Sex); 		printf("\t"); 		printf("Age："); 		scanf("%d",&student->Age); 		printf("\t"); 		printf("TOE："); 		scanf("%s",&student->TOE); 		printf("\t"); 		printf("GPA："); 		scanf("%f",&student->GPA); 		printf("\t"); 		printf("PhoneNo："); 		scanf("%s",&student->PhoneNo); 		printf("\t"); 		printf("MailingAddress："); 		scanf("%s",&student->MailingAddress); 		printf("\n\n\n\n"); 		student->next=NULL; 		fflush(stdin); 		if(head==NULL)head=student; 		else { 			while(p1->StudentID<student->StudentID&&p1->next!=NULL) { 				p2=p1; 				p1=p1->next; 			} 			if(p1->StudentID>student->StudentID) 				if(p1==head) { 					student->next=head; 					head=student; 				} else { 					p2->next=student; 					student->next=p1; 				} 			else p1->next=student; 		} 		student = (Student *) malloc (LEN); 		printf("是否继续添加,输入'y'或'Y'继续\n"); 		a=getchar(); 		fflush(stdin); 	} 	printf("\t\t\t录入成功!\n"); 	free(student); 	return 0; }    int del() {			//删除学生信息 	Student *p1,*p2; 	Student *student; 	int tage = 0; 	long StudentID;  	p1 = head; 	system("cls"); 	if (head == NULL) { 		printf("\t\t无学生信息！！！\nPlease Press Enter to Return……");  		return 0; 	} 	printf("\t\t请输入要删除的学生的学号: ");  	while(p1!=NULL) { 		if(p1->StudentID==StudentID) { 			tage=1; 			if(p1==head)head=head->next; 			else p2->next=p1->next; 			free(p1); 			break; 		} 		p1=p2; 		p2=p2->next; 	} 	if(tage==0) { 		printf("\t\t\t信息不存在!\n"); 	} 	tage=0; 	printf("\t\t\t成功删除息\n"); 	fflush(stdin);   	return 0; }  int search () {	  //查询 	Student *p1; 	Student *student; 	int tage = 0; 	long StudentID;  	system("cls"); 	printf("请输入要查询的学生学号："); 	scanf("%d",&StudentID); 	p1=head; 	if(head==NULL) { 		printf("无学生信息!\n"); 		return 0; 	} else 		while(p1!=NULL) 			if(p1->StudentID==StudentID) { 				tage=1; 				printf("你查找的学生信息如下:\n"); 				printf("\t\tStudentID：%ld\n",p1->StudentID); 				printf("\t\tName：%s\n",p1->Name); 				printf("\t\tSex：%s\n",p1->Sex); 				printf("\t\tAge：%d\n",p1->Age); 				printf("\t\tTOE：%s\n",p1->TOE); 				printf("\t\tGPA：%f\n",p1->GPA); 				printf("\t\tPhonrNo：%s\n",p1->PhoneNo); 				printf("\t\tMailingAddress：%s\n\n\n",&p1->MailingAddress); 				break; 			}   			else  p1=p1->next; 	if(tage==0)printf("\t\t\t无该学生信息!\n"); 	tage=0; 	fflush(stdin);  	return 0; }  int ALL() { //显示全部信息 	Student *p1; 	p1 = head; 	system("cls"); 	if(head==NULL) { 		printf("无学生信息!\n"); 		return 0; 	} 	while(p1!=NULL) { 		printf("\t\tStudentID：%ld\n",p1->StudentID); 		printf("\t\tName：%s\n",p1->Name); 		printf("\t\tSex：%s\n",p1->Sex); 		printf("\t\tAge：%d\n",p1->Age); 		printf("\t\tTOE：%s\n",p1->TOE); 		printf("\t\tGPA：%f\n",p1->GPA); 		printf("\t\tPhonrNo：%s\n",p1->PhoneNo); 		printf("\t\tMailingAddress：%s\n\n",p1->MailingAddress); 		p1=p1->next; 	} 	return 0; }    main() { 	int choose; 	int x=1; 	head=NULL;  	wellcome(); 	start(); 	while(x) { 		choose=menu(); 		switch(choose) { 			case 1: { 				input(); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 2: { 				input(); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 3: { 				del(); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 4: { 				search(); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 5: { 				ALL(); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 6: { 				exit(1); 			}   			default: { 				system("cls"); 				printf("\n\n\n\t\t\t无此功能\n\n\n\n"); 				break; 			} 		}  	} }

user: user-1
content: 引用 2 楼 Rhinedusk 的回复:引用 1楼user-1 的回复:scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了谢谢！不过其他的函数还是会崩  发下你改好的代码，我帮你看一下

user: user-0
content: 求助啊各位大大

user: user-0
content: 引用 1楼user-1 的回复:scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了谢谢！不过其他的函数还是会崩

user: user-1
content: scanf("%d",student->StudentID  改成  scanf("%d",&student->StudentID   同理其他的一些也要改了