成绩查询程序问题

chen1mao 2005-09-02 11:49:32
我做的程序稍微有些问题。。。
请各位GG JJ帮忙看看。。
在wintc里不报错。只是生成的文件里没有内容。
放到MinGW Developer Studio里编译,确有一大堆错误。晕了。。。
下面是文件代码:
config.c
/************************************/
/* 配置基本学生结构文件 */
/************************************/
#include <stdlib.h>
#include <stdio.h>
struct List
{
int Num;
char Name[10];
struct List *Next;
};
typedef struct List Node;
typedef Node *Link;

main.c

/* 主函数 */

#include "Stdio.h"
#include "Conio.h"



#include "config.c"
#include "mod.c"




main()
{
Link Head;


Head = creat(Head);
write(Head);



getch();
}


mod.c
#include <stdio.h>


/*定义指针部分*/


Link creat(Link Head)
{
Link New;
Link Pointer;
Link Head;




Head = (Link)malloc(sizeof(Node));

if (Head == NULL)
printf ("Memory Failure!!!");
else
{
/*输入数据*/
printf ("input Num: ");
scanf ("%d",&Head->Num);

printf ("input Name: ");
scanf ("%s",Head->Name);

/*链表处理部分*/
Pointer = Head;
Head->Next = NULL;

while(1)
{
New = (Link)malloc(sizeof(Node));


/*输入数据*/
printf ("input Num: ");
scanf ("%d",&New->Num);

if (New->Num == 0)
{
break;
}
else
{
printf ("input Name: ");
scanf ("%s",New->Name);

/*链表处理部分*/
New->Next = NULL;
Pointer->Next = New;
Pointer = New;
}





}
return Head;
}
}


Link write(Link Head)
{
FILE *fp;
Link Pointer;
Pointer = Head;
if ((fp = fopen("fff","wb")) == NULL)
{
printf ("open file error");
}
else
{

while (Pointer != NULL)
{
printf ("%d",Pointer->Num);
printf ("%s\n",Pointer->Name);
if (fwrite (&Pointer, sizeof (struct List) ,1,fp) == NULL)
/*fwrite(&header,sizeof(long),1,fp);
fwrite(&all,sizeof(int),1,fp); */
{
printf ("write error");
}
else
{
Pointer = Pointer->Next;
getch();
}
}
}
}

谢谢各位了!并不是我不爱完成作业,只是有些问题,自己想不明白。。




...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouhuahai 2005-09-02
  • 打赏
  • 举报
回复
至少在Link write(Link Head)
里的FILE *没有fclose,这样由于copy on write问题,可能就造成了无内容了.
xuanwf 2005-09-02
  • 打赏
  • 举报
回复
你没有fclose(...);
chen1mao 2005-09-02
  • 打赏
  • 举报
回复
呵呵。。回楼上的。那个地方的确错了。。应该是Point...
bingbox_1984 2005-09-02
  • 打赏
  • 举报
回复
if (fwrite (&Pointer, sizeof (struct List) ,1,fp) == 0)
Pointer不是指针么?还用&?不懂
snowbirdfly 2005-09-02
  • 打赏
  • 举报
回复
对了,我调了一下~
运行可以~
但是结果你自己调试了~
config.c
#include <stdlib.h>
#include <stdio.h>
struct List
{
int Num;
char Name[10];
struct List *Next;
};
typedef struct List Node;
typedef Node *Link;
//////////////////////////////
main.c
#include "Stdio.h"
#include "Conio.h"
#include "config.c"
extern Link creat(Link );
extern void write(Link );
main()
{
Link Head;
Head = NULL;

Head = creat(Head);
write(Head);

getch();
}
//////////////////////////
mod.c
#include <stdio.h>
#include "config.c"
#include <conio.h>
Link creat(Link Head)
{
Link New;
Link Pointer;
// Link Head;
Head = (Link)malloc(sizeof(Node));
if (Head == NULL)
{
printf ("Memory Failure!!!");
return NULL;
}
else
{
/*输入数据*/
printf ("input Num: ");
scanf ("%d",&Head->Num);

printf ("input Name: ");
scanf ("%s",Head->Name);

/*链表处理部分*/
Pointer = Head;
Head->Next = NULL;

while(1)
{
New = (Link)malloc(sizeof(Node));

/*输入数据*/
printf ("input Num: ");
scanf ("%d",&New->Num);

if (New->Num == 0)
{
break;
}
else
{
printf ("input Name: ");
scanf ("%s",New->Name);

/*链表处理部分*/
New->Next = NULL;
Pointer->Next = New;
Pointer = New;
}
}
return Head;
}
}
void write(Link Head)
{
FILE *fp;
Link Pointer;
Pointer = Head;
if ((fp = fopen("fff","wb")) == NULL)
{
printf ("open file error");
}
else
{

while (Pointer != NULL)
{
printf ("%d",Pointer->Num);
printf ("%s\n",Pointer->Name);
if (fwrite (&Pointer, sizeof (struct List) ,1,fp) == 0)
/*fwrite(&header,sizeof(long),1,fp);
fwrite(&all,sizeof(int),1,fp); */
{
printf ("write error");
}
else
{
Pointer = Pointer->Next;
getch();
}
}
}
}
snowbirdfly 2005-09-02
  • 打赏
  • 举报
回复
楼主的代码太乱了~
Link creat(Link Head)
{
Link New;
Link Pointer;
Link Head;
Link creat(Link Head)与Link Head;
这个不是有重新定义了吗?
我运行有好多处错误~~
chen1mao 2005-09-02
  • 打赏
  • 举报
回复
恩。我加上fclose()之后创建的文件里还是没有内容。。郁闷死我了。。
写到一个文件里后用不同的编译器编译就好用了。。郁闷死了。。
Link write(Link Head)
{
FILE *fp;
Link Pointer;
Pointer = Head;
if ((fp = fopen("fff","wb")) == NULL)
{
printf ("open file error");
}
else
{

while (Pointer != NULL)
{
printf ("%d",Pointer->Num);
printf ("%s\n",Pointer->Name);
if (fwrite (&Pointer, sizeof (struct List) ,1,fp) == NULL)

{
printf ("write error");
}
else
{
Pointer = Pointer->Next;


}
}
fclose(fp);
}
}
各位帮着找找原因好吗?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧