| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:[求助][讨论]编译通过了,执行是出现了错误,怎么改?
只看楼主 加入收藏
lyle3
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-5-19
收藏
 问题点数:0 回复次数:6 
[求助][讨论]编译通过了,执行是出现了错误,怎么改?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**********结构体定义**************/
struct Message
{
char name[20];
char homephone[20];
char mobilephone[20];
char address[50];
char group[20];
char email[50];
}person,intialPerson;
void add();
void del();
void search();
void out();
void modify();
void begin();
/***************函数定义*******************/

void add()/************添加单个记录函数*****************/
{
FILE *fp;
char c;
printf("请输入需要保存的姓名:\n");
scanf("%s",person.name);
printf("请输入需要保存的住宅电话:\n");
scanf("%s",person.homephone);
printf("请输入需要保存的手机号码:\n");
scanf("%s",person.mobilephone);
printf("请输入需要保存的家庭地址活工作单位:\n");
scanf("%s",person.address);
printf("请给保存号码分组\\朋友\\家人\\同事\\同学:");
scanf("%s",person.group);
printf("请输入需要保存的E-MAIL:\n");
scanf("%s",person.email);
printf("确定请输入1,取消请按2:");//编译通过,但是运行的时候这里有问题
scanf("%c",&c);
switch(c)
{
case '1': break;
case '2': return;break;
default:
printf("输入错误!!!");
}
fp=fopen("tongxuelu.txt","a");
fwrite(&person,sizeof(Message),1,fp);
printf("添加成功!!!\n");
fclose(fp);
}
void del() //定义删除函数
{
FILE *fp;
char a[20];
int i;
fp=fopen("tongxuelu.txt","a");
char c;
printf("shuru xingming:");
scanf("%s",a);
do
{
fread(&person,sizeof(Message),1,fp);
if(strcmp(person.name,a)==0)
{
printf("确定请输入1,取消请按2:"); //删除的实质是用空的字符去覆盖掉原来的内容
scanf("%c",c);
switch(c) //那么如何直接删除,能直接删除吗?怎么删除?
{
case '1':
{
fseek(fp,0-sizeof(Message),SEEK_CUR);
person=intialPerson;
fwrite(&person,sizeof(Message),1,fp);
}break;
case '2': return;break;
default:
printf("输入错误!!!");
}
i++;
}
fseek(fp,sizeof(Message),SEEK_CUR);
}while(strcmp(person.name,a)!=0);
if(feof(fp))
{
printf("没有此人记录");
printf("press any key to continue....");
getchar();
}
fclose(fp);
}
void modify() /******对编辑函数定义********/
{
FILE *fp;char c; //他的实质是用新的内容覆盖掉原来的内容
char a[20];int i=0; //可以直接在磁盘文件里进行编辑操作吗?可以的话怎么做?
fp=fopen("tongxuelu.txt","a");
printf("请输入要待修改人的姓名: ");
scanf("%s",a);
fread(&person,sizeof(Message),1,fp);
while(strcmp(person.name,a)==0)
{
printf("姓名:%s\n手机号码:%s\n固定电话:%s\n家庭住址:%s\n组名:%s\nE-MAIL:%s\n",person.name,person.mobilephone,person.homephone,person.group,person.email);
fseek(fp,sizeof(Message),SEEK_CUR);
fread(&person,sizeof(Message),1,fp);
}
if(feof(fp))
{
printf("没有此人记录");
printf("press any key to continue....");
getchar();
}
else
{
printf("请重新输入要修改人的信息: \n");
printf("请输入需要保存的姓名:\n");
scanf("%s",person.name);
printf("请输入需要保存的住宅电话:\n");
scanf("%s",person.homephone);
printf("请输入需要保存的手机号码:\n");
scanf("%s",person.mobilephone);
printf("请输入需要保存的家庭地址活工作单位:\n");
scanf("%s",person.address);
printf("朋友?家人?同事?同学?:\n");
printf("请给保存号码分组:\n ");
scanf("%s",person.group);
printf("请输入需要保存的E-MAIL:\n");
scanf("%s",person.email);
printf("确定请输入1,取消请按2:");
scanf("%c",c);
switch(c)
{
case 1:break;
case 2: return;break;
default:
printf("输入错误!!!");
}
fwrite(&person,sizeof(Message),1,fp);
printf("修改成功!!!\n");
printf("继续进行其他操作请输入1,取消请按2:");
scanf("%c",c);
switch(c)
{
case 1: return;break;
case 2: exit(1);break;
default:
printf("输入错误!!!");
}
}
fclose(fp);
}
void print() /****对查看函数定义*****/
{
FILE *fp;char c;
fp=fopen("tongxuelu.txt","a");
printf("the all records are:\n");
if(!feof(fp))
{
fread(&person,sizeof(Message),1,fp);
printf("姓名:%s\n手机号码:%s\n固定电话:%s\n家庭住址:%s\n组名:%s\nE-MAIL:%s\n",person.name,person.mobilephone,person.homephone,person.group,person.email);
fseek(fp,sizeof(Message),SEEK_CUR);
}
begin();
fclose(fp);
}
void search() /*****对查找函数定义*********/
{
int i;char a[20];
FILE *fp;
fp=fopen("tongxuelu.txt","a");
fread(&person,sizeof(Message),1,fp);
printf("please input the number that you are searching:\n");
scanf("%s",a);
while(strcmp(person.name,a)==0);
{
fseek(fp,sizeof(Message),SEEK_CUR);
fread(&person,sizeof(Message),1,fp);
}
if(feof(fp))
{
printf("没有此人记录");
printf("press any key to continue....");
getchar();
}
begin();
fclose(fp);
}
void out() /**********定义退出函数**********/
{
printf("谢谢使用!!!");
exit(1);
}
void begin() //开始的菜单函数
{
int a;
printf("1: 添加\n2: 查看\n3: 编辑 \n4: 删除\n5: 退出\n");
printf("请输入您想进行的操作号:");
scanf("%d",&a);
switch(a)
{
case 1: add();break;
case 2: search();break;
case 3: modify();break;
case 4: del();break;
case 5: out();break;
default:
printf("输入错误!!!\n");break;
}
}

void main() //主函数
{
begin();
printf("谢谢使用!!!\n");
exit(1);
}

搜索更多相关主题的帖子: 编译 
2006-05-22 17:03
lyle3
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-5-19
收藏
得分:0 

我将再给你一次选择的机会............... QQ:514897584
2006-05-22 17:17
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
出什么错误了,也不说!
看你们问问题。。。累!

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-23 12:44
道胎魔种
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-5-23
收藏
得分:0 
眼花了

[FLY]我的论坛 " target="_blank">E城市俱乐部[/FLY]
2006-05-23 16:01
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
问题出在c这个类型上
把c设成int型就可以了:
int c;

scanf("%d",&c);
switch(c)
{
case 1: break;
case 2: return;
default: printf("输入错误!!!");
}
问题解决

两耳不闻窗外事,专心只读圣贤书
2006-05-23 18:48
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
最后在main函数那里加上一句goto或者用while语句会更好一点,方便操作

两耳不闻窗外事,专心只读圣贤书
2006-05-23 18:51
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

GOTO还是少用点


2006-05-23 20:08
快速回复:[求助][讨论]编译通过了,执行是出现了错误,怎么改?
数据加载中...
 
   



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

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