user-0 提问: 链表无法输入问题

回复:
user: user-0
content: 引用 4 楼 寻开心 的回复:闲得无聊，给你写了下， 剩下的自己玩儿吧好的，谢谢

user: user-0
content: 请问为啥只能输出一组就停止运行了。  引用 1 楼 寻开心 的回复:srcj(） 这个函数是向文件里面写啊， 能输入个鬼   prin是从文件读取数据，问题还没有写全 #include<stdio.h> #include<stdlib.h> #include<string.h> struct cj{     char xh[10];     char name[10];     int gs;     int cx;     struct cj *next; }; typedef struct cj jj,*listlink; void srcj(listlink head); void prin(listlink head); int main(void) {     int n;     listlink head;     head = (listlink)malloc(sizeof(jj));     head->next = NULL;     while(scanf("%d",&n) != EOF)      {     	switch (n)     	{     		case 1:             srcj(head);             break;             case 2:             prin(head);             break; 		} 	}     return 0; } void srcj(listlink head) {     listlink p;     p = head->next;     FILE *fp = fopen("fl.txt","w");     if(fopen("fl.txt","w") == NULL)     {         printf("打开文件失败\n");         exit(1);     }     else     printf("文件已经打开,请输入数据\n");      int b = 3;     printf("请输入 学号 姓名 高数成绩 编程成绩\n要求输入3组\n");     while(b--)     {         p = (listlink)malloc(sizeof(jj));         scanf("%s%s%d%d",&p->xh,&p->name,&p->gs,&p->cx);         fprintf(fp,"%s%s%d%d",p->xh,p->name,p->gs,p->cx);         p->next=head->next;         head->next = p;     }     p->next = NULL;     fclose(fp);     printf("文件已关闭\n"); } void prin(listlink head) {     FILE *fp;     listlink o;     o = head->next;     if(fopen("fl.txt","r") == NULL)     {         printf("打开文件失败\n");         exit(1);     }     else     printf("文件已打开\n");     while(o != NULL)     {     	printf("正在输出\n");     	fscanf(fp,"%s%s%d%d",&o->xh,&o->name,&o->gs,&o->cx);         printf("%s %s %d %d\n",o->xh,o->name,o->gs,o->cx);         o = o->next;     }     fclose(fp);     printf("文件已关闭\n"); }

user: user-1
content: 闲得无聊，给你写了下， 剩下的自己玩儿吧

user: user-1
content: #include<stdio.h> #include<stdlib.h> #include<string.h>  struct cj{     char xh[10];     char name[10];     int gs;     int cx;     struct cj *next; }; typedef struct cj jj,*listlink;; void srcj(listlink head); void prin(listlink head); void append(listlink head); void display(listlink head); int main(void) {     int n;     listlink head;     head = (listlink)malloc(sizeof(jj));     head->next = NULL;     while(1) {     	printf("0:Quit 1: 从文件读 2：写入文件  3：添加：");     	scanf("%d",&n);     	switch (n)     	{         	case 2:             	printf("把数据写入到fl.txt文件昂中\n");             	srcj(head);             	break;         	case 1:             	printf("从fl.txt文件当中读取数据\n");             	prin(head);             	break;         	case 3:             	append(head); 				break;	 			case 0: 				return 0;	 				break; 			case 4: 				display(head); 				break;      	} 	};     return 0; }  /* 把链表写入文件 */  void srcj(listlink head) { 	if ( head == NULL ) return;      listlink p = head->next;     FILE *fp;     if( (fp=fopen("fl.txt","wt") )== NULL)     {         printf("打开写入文件fl.txt失败\n");         return;     }     while(p)     {     	 printf(   "%s %s %d %d\n",p->xh, p->name, p->gs, p->cx);         fprintf(fp,"%s %s %d %d\n",p->xh, p->name, p->gs, p->cx);         p = p->next;     }     fclose(fp); }  /* 从文件读取内容 */  void prin(listlink head) { 	if ( NULL == head) return;     FILE *fp;     listlink p = head;     if((fp=fopen("fl.txt","r")) == NULL)     {         printf("打开fl.txt文件失败\n");         return ;     }     while(1)     {     	listlink q = (listlink)malloc(sizeof(jj));     	int nRead = fscanf(fp,"%s%s%d%d",q->xh,q->name, &q->gs,&q->cx);         if ( 4 == nRead ) {         	printf("%s\t%s\t%d\t%d\n",q->xh,q->name,q->gs,q->cx);         	p->next = q;         	p = q; 		} else { 			free(q); 			break; 		}     }     p->next = NULL;     fclose(fp); }  void append(listlink  head) { 	if ( NULL == head) return; 	listlink q = head; 	while(q->next ) q=q->next;  	listlink p = (listlink) malloc(sizeof(jj)); 	printf("input data"); 	scanf("%s%s%d%d", p->xh, p->name, &p->gs, &p->cx); 	q->next = p; 	p->next = NULL; }  void display(listlink head) { 	if ( NULL == head ) return; 	listlink p = head->next; 	while (p) { 		printf("%s\t%s\t%d\t%d\n", p->xh, p->name, p->gs, p->cx); 		p=p->next; 	} }

user: user-0
content: 引用 1 楼 寻开心 的回复:srcj(） 这个函数是向文件里面写啊， 能输入个鬼   prin是从文件读取数据，问题还没有写全

user: user-1
content: srcj(） 这个函数是向文件里面写啊， 能输入个鬼   prin是从文件读取数据，问题还没有写全