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

#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
快速回复:[求助][讨论]编译通过了,执行是出现了错误,怎么改?
数据加载中...
 
   



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

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