程序执行需要多敲一次回车 求助
求助:1.姓名中间不能有空格,使用“%[^\n]”替换“%s”后,只能输入一条记录2.记录输入完毕后Ctrl+Z,需要多敲一次回车
程序代码:
#include<stdio.h> #include<stdlib.h> #define len sizeof(node) typedef struct Node { char name[25]; int data; struct Node *link; }node; typedef struct List { node *first,*last; }list; void cpy(char *a,char *b); void init(node *a); int show(list a); int insert(list *a,int num,char name[]) { node *p=(node *)malloc(len); cpy(name,p->name); p->data=num; p->link=NULL; if(a->first==NULL) { a->first=p; a->last=p; } else { (a->last)->link=p; a->last=p; p->link=NULL; } show(*a); return 0; } void main() { list a; a.first=a.last=NULL; char name[25]; int data; do { *name=NULL; printf("请输入姓名: \n"); scanf("%s",name); if(*name==NULL) break; printf("请输入成绩: \n"); scanf("%d",&data); insert(&a,data,name); }while(1); system("pause"); show(a); } void cpy(char *a,char *b) { while(*a!=NULL) *b++=*a++; *b='\0'; } void init(node *a) { cpy("",a->name); a->data=0; a->link=NULL; } int show(list a) { node *p=a.first; printf("\n\n"); while(p!=NULL) { printf("%-10s %5d \n",p->name,p->data); p=p->link; } printf("\n"); return 0; }