C语言的问题帮我看看那里出了问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:55:34
#define INFO struct employee
#define LEN sizeof (struct employee)
#define NULL 0
#include <stdio.h>
#include <string.h>
#include <malloc.h>
INFO
{
long num; char name[7];
int age; char company[10];
INFO*next;
} *head=NULL;

void create ()
{
INFO *p;
p=(INFO*) malloc (LEN);
printf ("Please input employee info num,name,age,company:");
scanf ("%ld%s%d%s", &p->num, p->name, &p->age, p->company);
while (p->num!=0)
{p=(INFO*) malloc (LEN);
printf ("Please input employee info num,name,age,company:");
scanf ("%ld%s%d%s", &p->num, p->name, &p->age, p->company);
}
}
void display ()
{
INFO*p=head;
while (p!=NULL)
{
printf ("%ld %s %d %s\n",
p->num, p->name, p->age, p->company); <

这个程序中的一些写法是传统C中的用法,现在的编译器几乎都是ANSI C编译器,最好用ANSI C的写法。

注意 函数名称和后面的括号之间不要有空格。
注意 函数头部最好用ANSI C的写法
例如:
void serch (find)
long find;
改为
void serch(long find)

*********************************************
你用什么编译器?有什么提示消息?

首先 按照楼上说的改下long find 先让你“编译”通过:

最重要的@@@@@@ 你的主函数里的那个 creat(); 就完了???!!!

你返回啥了????

你这么想,你定义它是个void型函数,还没有参数~
我晕~~~你见过这样的函数??
你在主函数里调用了一下它,你想想,看似你输入了数据,键盘动了 手指动了~~~ 你跳出来看,它等于在主函数里啥也没干~~~~~~汗~~~

你这个建链表的函数内容写的好 那你建了个链表,这个链表给谁啊??? 你要返回这个链表的指针吧?
构造返回链表指针的函数INFO *creat(void){....} 返回一个指针指向这个链表: 指针 = creat();看到?这个creat()前面可没有*啊!!!!!
否则会陷入莫名其妙的循环。

我没有很仔细的看你写的程序是做什么的,但是从这个代码上可以知道你认为调用一个自己构造的函数创建一个链表 链表就会随时供你调用是吧?

好好想想~ 自己构造函数里用的是“真”的变量么??这个链表也就是在你输入“ENTER”之后就在缓存里跳舞去了@@@@@

这步错了,以下的程序都没有作用了 他们都在调用个啥?