程序执行需要多敲一次回车 求助
求助: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;
}









