文件指针问提

1cdsun 2003-03-30 03:18:12
下面程序在读文件时会出错和无法生成一个文本文件,请指点。
# include "stdio.h"
# define max 100
struct addr {
char name[30];
char sex[3];
char antenatal[9];
char phone[15];
char office[15];
char handset[15];
char address[40];
}addr_jilu[max];
FILE *fp;
main()
{
void shuru(),shuchu(),chazhao(),shanchu();

char x;
do{
printf(" 1-----输入记录.\n");
printf(" 2-----输出记录.\n");
printf(" 3------查找记录.\n");
printf(" 4-----删除记录.\n");
printf(" 5------QUIT.\n");
printf("输入选择番号:");
scanf("%c",&x);
switch(x){
case'1':shuru();
break;
case'2':shuchu();
break;
case'3':chazhao();
break;
case'4':shanchu();
break;
case'5':exit();
break;
}
}while(x!='5');
}

void shuru()
{
char x;
int i=0;
if((fp=fopen("d:\off\sun\tc\penyou.txt","a"))==NULL){
printf("欢迎建立自己的电话录.\n");
}
fseek(fp,0,2);
do {
printf("姓名:");
scanf("%s",addr_jilu[i].name);
printf("性别:");
scanf("%s",addr_jilu[i].sex);
printf("出生年月格式如:19830616:");
scanf("%s",addr_jilu[i].antenatal);
printf("电话:");
scanf("%s",addr_jilu[i].phone);
printf("办公室电话:");
scanf("%s",addr_jilu[i].office);
printf("手机:");
scanf("%s",addr_jilu[i].handset);
printf("地址:");
scanf("%s",addr_jilu[i].address);
fprintf(fp,"%s%s%s%s%s%s%s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
fseek(fp,sizeof(addr_jilu[i]),2);
printf("是否继续输入记录? y/n:");
x=getchar();
x=getchar();
}while(x=='y' || x=='Y');
fclose(fp);
}

void shuchu()
{
int i;
rewind(fp);
if((fp=fopen("d:\off\sun\tc\penyou.txt","r"))==NULL){
printf("文件出错或没有找到.");
exit(1);
}
for(i=0;!feof(fp);++i){
fseek(fp,sizeof(addr_jilu[i]),1);
fscanf(fp,"%s%s%s%s%s%s%s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
printf("%s %s %s %s %s %s %s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
}
fclose(fp);
}

void chazhao()
{
char name1[30];
int i;
printf("输入要找的人的姓名:");
scanf("%s",name1);
if((fp=fopen("D:\off\sun\tc\penyou.txt","r"))==NULL){
printf("文件出错或没有找到.");
exit(1);
}
fseek(fp,sizeof(addr_jilu[i]),0);
for(i=0;!feof(fp);++i){
fseek(fp,sizeof(addr_jilu[i]),1);
fscanf(fp,"%s%s%s%s%s%s%s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
if(! strcmp(name1,addr_jilu[i].name)){
printf("%s%s%s%s%s%s%s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
break;
}
fclose(fp);
}}

void shanchu()
{
char name1[30];
int i;
printf("输入要删除人的姓名:");
scanf("%s",name1);
if((fp=fopen("D:\off\sun\tc\penyou.txt","r+t"))==NULL){
printf("文件出错或没有找到.");
exit(1);
}
fseek(fp,sizeof(addr_jilu[i]),0);
for(i=0;!feof(fp);++i)
{
fseek(fp,sizeof(addr_jilu[i]),1);
fscanf(fp,"%s%s%s%s%s%s%s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
}
for(i=0;!feof(fp);i++)
{
if(! strcmp(name1,addr_jilu[i].name))
{
for(;!feof(fp);i++)
{
strcpy(addr_jilu[i].name,addr_jilu[i+1].name);
strcpy(addr_jilu[i].sex,addr_jilu[i+1].sex);
strcpy(addr_jilu[i].antenatal,addr_jilu[i+1].antenatal);
strcpy(addr_jilu[i].phone,addr_jilu[i+1].phone);
strcpy(addr_jilu[i].office,addr_jilu[i+1].office);
strcpy(addr_jilu[i].handset,addr_jilu[i+1].handset);
strcpy(addr_jilu[i].address,addr_jilu[i+1].address);
}
}
}
fseek(fp,sizeof(addr_jilu[i]),0);
for(i=0;!feof(fp);i++)
fprintf(fp,"%s%s%s%s%s%s%s",addr_jilu[i].name,addr_jilu[i].sex,addr_jilu[i].antenatal,addr_jilu[i].phone,addr_jilu[i].office,addr_jilu[i].handset,addr_jilu[i].address);
rewind(fp);
}
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
1cdsun 2003-03-30
  • 打赏
  • 举报
回复
没有嵌套定义函数。
yeahspyme 2003-03-30
  • 打赏
  • 举报
回复
你怎么嵌套定义函数?
yzb1000 2003-03-30
  • 打赏
  • 举报
回复
用F7,CTL+F7,一步一步自己找试试

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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