标题:关于一个简单的电话本的问题
只看楼主
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
 问题点数:0 回复次数:6 
关于一个简单的电话本的问题
小弟写了一个电话本,可执行的时候总是说与wfile声明中的类型不匹配,找了半天也找不到出错的地方。请问各位老大是哪里出错了呢?小弟万分感激!!
#include<stdio.h>
#include<stdlib.h>
struct {
char name[15];
char age[3];
char sex[10];
char room[20];
char ID[10];
char phone_num[12];
}stu[50];

int n=1;

void creat_record(void)
{
char ch;
printf("-------------This is a new record!-------------\n");
printf("Please Enter Name:\n");
gets(stu[n].name);
printf("Please Enter Age:\n");
gets(stu[n].age);
printf("Please Enter Sex:\n");
gets(stu[n].sex);
printf("Please Enter Room:\n");
gets(stu[n].room);
printf("Please Enter ID:\n:");
gets(stu[n].ID);
printf("Please Enter Phone_num:\n");
gets(stu[n].phone_num);
n++;
printf("Do you want to save ? Please press 'Y' or 'N'...\n");
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
wfile();
if(ch=='n'||ch=='N')
return;
}
void list_record(void)
{
int i=1;
for(;i<=n;i++)
{
printf("=============Record %d==================\n",i);
printf("Name:%s\n",stu[i].name);
printf("Age:%s\n",stu[i].age);
printf("Sex:%s\n",stu[i].sex);
printf("room:%s\n",stu[i].room);
printf("ID:%s\n",stu[i].ID);
printf("Phone_num:%s\n",stu[i].phone_num);
}
}

void search_record(void)
{
int k=1;
char name2[15];
printf("Please Enter the person name:\n:");
gets(name2);
for(;k<=n;k++)
if(strcmp(name2,stu[k].name)==0)
{
printf("Name:%s\n",stu[k].name);
printf("Age:%s\n",stu[k].age);
printf("Sex:%s\n",stu[k].sex);
printf("room:%s\n",stu[k].room);
printf("ID:%s\n",stu[k].ID);
printf("Phone_num:%s\n",stu[k].phone_num);
}
}

void wfile(void)
{
FILE *fp;

if((fp=fopen("phonebook","wb"))==NULL)
printf("Can not open file!\n");
else
{
fwrite(&stu[n],sizeof(stu[0]),n,fp);
fclose(fp);
printf("Has been saved!\n");
}
}

void rfile(void)
{
FILE *fp;
if((fp=fopen("phonebook.c","rb"))==NULL)
printf("Can't open file!\n");
else
{
while((fread(&stu[n],sizeof(stu[n]),1,fp))==1)
n++;
fclose(fp);
printf("File Lorded!\n");
}
}

main()
{
void creat_record(void);
void list_record(void);
void search_record(void);
void wfile(void);
void rfile(void);

char ch;
int a=1;

printf("=================Welcome to the phonebook!=================\n");
while(a)
{
printf("Press E to creat a new record\n");
printf("Press L to list the all record\n");
printf("Press S to search the record\n");
printf("Press C to cannle the programme\n");
ch=getchar();
getchar();
switch(ch)
{
case 'e':
case 'E':creat_record();break;
case 'l':
case 'L':list_record();break;
case 's':
case 'S':search_record();break;

}
}
getch();
}
搜索更多相关主题的帖子: 电话 TABLE include name 
2006-05-28 14:51
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
缺少wfile()和rfile()函数原型申明
炼好基本功、再编长程序(多余的话)

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-28 15:09
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
得分:0 
那请问楼上的大哥,应该怎样修改呢?
2006-05-28 15:45
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
int n=1; //本来就有
void wfile(void); //望您添加上去
void rfile(void); //望您添加上去
void creat_record(void)//本来就有

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-28 15:54
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
得分:0 
加上面两句有什么用呢?
2006-05-28 19:48
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
做了些小修改
[CODE]

#include "stdio.h"
#include "stdlib.h"
struct {
char name[15];
char age[4];
char sex[6]; /*这大小都了*/
char room[20];
char ID[10];
char phone_num[12];
} stu[50];
int n=0; /*更合习惯*/

void Wfile(void) /*放在Creat_record()之前供调用*/
{
FILE *fp;

if((fp=fopen("phonebook.txt","wt"))==NULL) /*容易阅读*/
printf("Can not open file!\n");
else
{
fwrite(stu,sizeof(stu[0]),n,fp);/*看你的意思是一次性写入所有数据*/
fclose(fp);
printf("Has been saved!\n");
}
}
void Creat_record(void)
{
char ch;

printf("-------------This is a new record!-------------\n");
printf("Please Enter Name:\n");
gets(stu[n].name);
printf("Please Enter Age:\n");
gets(stu[n].age);
printf("Please Enter Sex:\n");
gets(stu[n].sex);
printf("Please Enter Room:\n");
gets(stu[n].room);
printf("Please Enter ID:\n");
gets(stu[n].ID);
printf("Please Enter Phone_num:\n");
gets(stu[n].phone_num);
n++;
printf("Do you want to save ? Please press 'Y' or 'N'...\n");
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
Wfile();
if(ch=='n'||ch=='N')
return;
}

void List_record(void)
{
int i=0;

for(;i<n;i++) /* 因为读数据时的n++,是在最后*/
{
printf("=============Record %d==================\n",i+1);
printf("Name:%s\n",stu[i].name);
printf("Age:%s\n",stu[i].age);
printf("Sex:%s\n",stu[i].sex);
printf("room:%s\n",stu[i].room);
printf("ID:%s\n",stu[i].ID);
printf("Phone_num:%s\n",stu[i].phone_num);
}
}

void Search_record(void)
{
int k=0;
char name[15];

printf("Please Enter the person name:\n");
gets(name);
for(;k<n;k++)
if(strcmp(name,stu[k].name)==0)
{
printf("Name:%s\n",stu[k].name);
printf("Age:%s\n",stu[k].age);
printf("Sex:%s\n",stu[k].sex);
printf("room:%s\n",stu[k].room);
printf("ID:%s\n",stu[k].ID);
printf("Phone_num:%s\n",stu[k].phone_num);
}
printf("It's not exist!\n"); /*完备结果*/
}
/*那个读文件楼主也没用,删了*/

int main()
{
char ch=1; /*函数定义在前,没必要再声明*/

printf("=================Welcome to the phonebook!=================\n");
while(ch)
{
printf("Press E to creat a new record\n");
printf("Press L to list the all record\n");
printf("Press S to search the record\n");
ch=getchar(); getchar();
switch(ch)
{
case 'e':
case 'E': Creat_record();break;
case 'l':
case 'L': List_record();break;
case 's':
case 'S': Search_record();break;
default : break; /*必要的*/
}
printf("Do you want to continue ? Please press 'Y' or 'N'...\n");
ch= (getchar()-'Y'==0?1:0); getchar(); /*必要的*/
}

return 0;
}

[/CODE]

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-29 02:10
Garand
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-27
得分:0 

看到楼上这么热心的人,我还能说什么??致以一百二十万分的敬意!

2006-05-29 12:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-67985-1-1.html




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

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