好的,这是我的代码的编辑版本以及创建列表的函数。start 被初始化为一个全局变量并且 start=NULL。我也改变了我的fwrite。我没有枚举一长串变量,而是使用 buf 来获取其内容(即名称、标题、类型...)。mygets 只是我创建的一个函数,用于删除后面的 \n。出现同样的问题。外国符号出来了。
void saving()
{
FILE *out;
struct node buf;
struct node *current;
out = fopen("foo", "wb");
if(out == NULL) return;
printf("Writing to file...");
while(current != NULL)
{
fwrite(&buf, sizeof(struct node), 1, out);
}
printf("Done!\n");
fclose(out);
}
void create()
{
node *p,*q;
int item;
char ti[STRLEN],na[STRLEN],ty[6];
printf("Warrior name: ");
mygets(na);
printf("\nWarrior title: ");
mygets(ti);
printf("\nWarrior Type and Class Encoding: ");
fgets(ty,6,stdin);
p=(node *)malloc(sizeof(node));
strcpy(p->name,na);
strcpy(p->title,ti);
strcpy(p->type,ty);
p->next=NULL;
if(start==NULL)
{
start=p;
}
else
{
q=start;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
}
}