技术问题!希望大家帮忙解决!

neebeen 2004-12-29 12:52:28
程序在查找的时候会有乱码显示.
希望高手加以改正.
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define LEN sizeof(struct AddressBook)
struct AddressBook
{
int no;
char name[10];
char address[30];
char mailnumber[7];
char telephone[12];
struct AddressBook *next;
};
void creat_append(char flag)
{
FILE *fp;
struct AddressBook *p0;
char hc='y';
if((fp=fopen("d:\\address.dat","w+"))==NULL)
{
printf("文件不能打开!");

}
if(flag=='2')while(!feof(fp))fread(&p0,LEN,1,fp);
while(hc=='y'||hc=='Y')
{
p0=(struct AddressBook *)malloc(LEN);
printf("请输入朋友信息:\n");
printf("编号:");
scanf("%d",&p0->no);
printf("姓名:");
scanf("%s",p0->name);
printf("地址:");
scanf("%s",p0->address);
printf("电话:");
scanf("%s",p0->telephone);
printf("继续吗?(y/n)");
scanf("%c",&hc);
fwrite(p0,LEN,1,fp);


}
fclose(fp);
}
void look_chang(char flag)
{
FILE *fp,*ft;
struct AddressBook *p;
int bh;
if((fp=fopen("d:\\address.dat","r+"))==NULL)
{
printf("文件不能打开!") ;
}
if((ft=fopen("d:\\ls.dat","w+"))==NULL)
{
printf("文件不能建立!");
}
printf("请输入查找或修改的编码:");
scanf("%d",&bh);
while(!feof(fp))
{
p=(struct AddressBook *)malloc(LEN);
fread(p,LEN,1,fp);
if(p->no!=bh&&flag=='4')
fwrite(p,LEN,1,ft);
else
{
printf("%10s%20s%10s %14s\n",p->name,p->address,p->mailnumber,p->telephone);

}
}
fcloseall();
}
void main()
{
char cd;
while(1)
{
printf("\n 操作菜单");
printf("\n 1--新建\n 2--插入\n 3--查询\n 4--修改");
printf("\n 其他任意键结束:");
scanf("%c",&cd);
switch(cd)
{
case'1':
case'2':creat_append(cd);break;
case'3':
case'4':look_chang(cd);break;
default:exit(0);
}
}
}

...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
neebeen 2004-12-29
  • 打赏
  • 举报
回复
部分功能出现乱码?恩,急需解决,不知道各位有什么高招呢?
jameswjue 2004-12-29
  • 打赏
  • 举报
回复
P和P0都没有分配内存
winstonch 2004-12-29
  • 打赏
  • 举报
回复
而且你还传这个指针的地址进去,这就更不对了,要实现你的这个功能挺麻烦的,好好想想吧
winstonch 2004-12-29
  • 打赏
  • 举报
回复
FILE *fp;
struct AddressBook *p0;
char hc='y';
if((fp=fopen("d:\\address.dat","w+"))==NULL)
{
printf("文件不能打开!");

}
if(flag=='2')while(!feof(fp))fread(&p0,LEN,1,fp);
p0没有分配空间你就往里写东西,不知道乱码是否与这有关,但是只出乱码你应该庆幸了
xelements 2004-12-29
  • 打赏
  • 举报
回复
打开文件时用二进制方式

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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