| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:[求助]在不同编译器出现的问题!
只看楼主 加入收藏
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
收藏
 问题点数:0 回复次数:3 
[求助]在不同编译器出现的问题!
利用链表增加或删除信息!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*结构体定义*/
struct Slist
{
char name[10];/*姓名*/
char phone[13];/*电话*/
char sex[5];/*性别*/
struct Slist *next;

};
struct Slist *head;/*头指针*/
struct Slist *tail;/*尾指针*/
void Enter_name();/*输入一个姓名*/
void Deleted();/*删除键表信息*/
void Search();/*查询一条记录信息*/
struct Slist *find(char *name);/*用于查找名字并返回结点信息指针*/
void Input_link(struct Slist *info);/*对结点的插入处理*/
int Menu();/*主菜单的处理*/
int main()
{
int flag=1;
head=NULL;
tail=NULL;
while(flag)
{
switch(Menu())
{
case 1:
Enter_name();
break;
case 2:
Deleted();
break;
case 3:
Search();
break;
case 4:
flag=0;
break;
}
}
printf("程序结束!\n");
return 0;
}

int Menu()
{
char choice_str[5];
int choice_int;
printf("1_Enter information!\n");
printf("2_Delete Information!\n");
printf("3_Search information!\n");
printf("4_Exit");
do
{
printf("Input your choice!\n");
gets(choice_str);
choice_int=atoi(choice_str);
if((choice_int<1)||(choice_int>4))
{
printf("Please enter a right number!\n");
printf("1_Enter information!\n");
printf("2_Delete Information!\n");
printf("3_Search information!\n");
printf("4_Exit");
}
}while((choice_int<1)||(choice_int>4));
return (choice_int);
}

void Enter_name()/*输入名字判断链表结速束*/
{
int i;
struct Slist *info;
void input_info(char *,char *,int);
for(i=0;;i++)
{
info=(struct Slist *)malloc(sizeof(struct Slist));
if(info==NULL)
{
printf("\n out of memory");
return;
}
input_info("Enter name:",info->name,10);
if(info->name[0]=='0')
break;
else
{

input_info("Enter phone:",info->phone,13);
input_info("Enter sex:",info->sex,5);
Input_link(info);
}
}
info->next=NULL;
}
void input_info(char *s,char *name,int len)/*各信息的输入*/
{
char an_name[10];
while(strlen(an_name)>len)
{
printf("%s",s);
gets(an_name);
if(strlen(an_name)>len)
printf("You had entered wrong data!\n");
}
strcpy(name,an_name);
}
void Input_link(struct Slist *info)/*插入结点*/
{
if(head==NULL)
{
head=info;
tail=info;
}
else
{
tail->next=info;
tail=info;
}
}
struct Slist *find(char *name)/*查找与输入名字相符的结点*/
{
struct Slist *info;
info=head;
while(info)
{
if(strcmp(info->name,name)==0)
return (info);
else
info=info->next;
}
return (info);
}
void Search()/*查找一条信息*/
{
struct Slist *info;
char input_name[10];
printf("Please enter data which you want to find:");
gets(input_name);
info=find(input_name);
if(info==NULL)
printf("Can not find which you want!\n");
else
printf("Name :%s\nTelephone :%s\nSex :%s\n",info->name,info->phone,info->sex);
}
void Deleted()
{
struct Slist *info;
struct Slist *p1,*p2;/*记录查找与结点符合的位置*/
char name[10];
printf("Please input a name which you want to delete:");
gets(name);
info=find(name);
if(info!=NULL)
{
if(info==head)
{
head=head->next;
printf("Deleted : %s",info->name);
free(info);
}
else
{
p1=head;
while(info!=p1)
{
p2=p1;
p1=p1->next;
}
p2->next=p1->next;
printf("Deleted :%s",info->name);
free(info);
}
}
else
printf("Can't find the data you want!\n");
}
我在TC下选择1时,就弹出分配失败的信息,而在VC++6.0下就不会出现这种情况
还有int Menu(){}这个函数内的do{...}while(...)改成while(...){..}在TC运行到这里就出现跳过输入语句
而不断的在屏幕上显示,,究竟是什么原因?
搜索更多相关主题的帖子: 编译 
2007-06-27 16:40
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 
有没有malloc函数分配空间呢?

惟有学习不断的学习!
2007-06-27 16:46
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
收藏
得分:0 
void Enter_name()/*输入名字判断链表结速束*/
{
int i;
struct Slist *info;
void input_info(char *,char *,int);
for(i=0;;i++)
{
info=(struct Slist *)malloc(sizeof(struct Slist));
if(info==NULL)
{
printf("\n out of memory");
return;
}
input_info("Enter name:",info->name,10);
if(info->name[0]=='0')
break;
else
{

input_info("Enter phone:",info->phone,13);
input_info("Enter sex:",info->sex,5);
Input_link(info);
}
}
info->next=NULL;
}
有啊,就下划线那里
2007-06-27 17:06
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
收藏
得分:0 
就info=(struct Slist *)malloc(sizeof(struct Slist))这里不是分配了吗?

2007-06-27 17:08
快速回复:[求助]在不同编译器出现的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025835 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved