想问一下,为什么我明明用了while(1),但是编译出来只能循环一次?
#include
#include typedef struct{ int sno; int G; }Student; typedef struct LNode{ Student stu; struct LNode*next; } LNode,*LinkList; void save(LinkList&L)//保存文件 { FILE*f; if ((f = fopen("file", "w+")) == NULL){ printf("不能打开文件\n"); exit(1); } LinkList p; p=new LNode; p=L->next; while(p) { fprintf(f,"%d",p->stu.G); fprintf(f,"%d",p->stu.sno); p=p->next; } fclose(f); } void insert(LinkList&L,int i)//插入 { printf("请输入学生信息:\n"); LNode*p,*s; p=new LNode; s=new LNode; s=L->next; scanf("%d %d",&p->stu.sno,&p->stu.G); int j=1; while(s&&jnext; j++; } p->next=s->next; s->next=p; } void find(LinkList&L)//查找 { printf("请输入要查找的学生的学号:\n"); int num; scanf("%d",&num); LinkList p; p=new LNode; p=L->next; while(p->stu.sno!=num) { p=p->next; } printf("该学生成绩为:%d",p->stu.G); } void del(LinkList&L)//删除 { printf("请输入要删除信息的学生的学号:\n"); int num; scanf("%d",&num); LinkList p,q; p=new LNode; q=new LNode; p=L->next; while(p->stu.sno!=num) { p=p->next; } q=p->next; p->next=q; delete q; } void clear(LinkList&L)//清空 { LinkList p,q; p=new LNode; q=new LNode; p=L->next; while(p) { q=p->next; delete p; p=q; } L->next=NULL; } void print(LinkList&L)//读取所有学生信息 { LinkList p; p=new LNode; p=L->next; while(p) { printf("学号:%d ,成绩:%d",p->stu.sno,p->stu.G); p=p->next; } } void menu(){ printf("save to file \n"); printf("insert into List \n"); printf("find from List\n" ); printf("delete from List\n" ); printf("clear List\n" ); printf("print List
\n"); printf("exit system
\n" ); } int main(int argc, char *argv[]) { char choice; LinkList L; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; system("color 07"); while(1) { menu(); scanf("%c",&choice); switch(choice) { case 's' :save(L);break; case 'i' :{ int i; printf("请输入要插入的位置:\n"); scanf("%d",&i); insert(L,i); break; } case 'f' :find(L);break; case 'd' :del(L);break; case 'c' :clear(L);break; case 'p' :print(L);break; case 'e' :exit(0); default :printf("error choice\n"); break; } } return 0; }
运行一次你输入的是什麽字符呢?