主题:运行错误的讨论
我编写了一个通讯录程序,其中的一些和文件打开有关的出了点问题(程序还没有写完)。
还请大家指点一二,找出其中的错误。
这个是主函数:(通讯录的主函数.cpp)
#include"通讯录.h"
#include"stdio.h"
#include"stdlib.h"
void main()
{
user();
}
这个是头文件:(通讯录.h)
#include"string.h"
#include"stdio.h"
#include"stdlib.h"
#define M 100
/*定义数据结构*/
typedef struct book{
char Sno[15];
char Sname[8];
char Address[40];
}Referbook;
Referbook t[M];
/*函数原型声明*/
void Add();
void DELETE();
void Find();
void Exit();
/*用户界面设计*/
void user()
{
int m;
printf("******************MENUE********************\n");
printf("********* **************\n");
printf(" 欢迎您的使用! \n");
printf("********* **************\n");
printf("*******************************************\n");
printf(" 1.添加记录\n");
printf(" 2.删除记录\n");
printf(" 3.查找记录\n");
printf(" 4.推出\n");
printf("*******************************************\n");
printf("请您选择所需要的操作(1-4):");
scanf("%d",&m);
if(m<1&&m>4)
{
printf("您的选择有误,请重新输入:");
scanf("%d",&m);
}
else
{
switch(m)
{
case 1:Add();break;
case 2:break;
case 3:Find();break;
default:;
}
}
}
void Add()
{ Referbook t[M];
FILE *p;
int i,j;
printf("请输入要增加的记录数:\n");
scanf("%d",&i);
if((p=fopen("G:\\C.txt","a+"))==NULL)
if((p=fopen("G:\\C.txt","wb"))==NULL)
{
printf("打开文件失败,请检查!\n");
getchar();
exit (1);
}
printf("**********学号*********姓名**********地址********\n");
for(j=0;j<i;j++)
{
scanf("%s%s%s",t[j].Sno,t[j].Sname,t[j].Address);
fwrite(&t[j],sizeof(Referbook),1,p);
}
fclose(p);
}
void Find()
{
Referbook t[M];
char s[10];
int i,j;
FILE *fp;
if((fp=fopen("G:\\C.txt","r"))==NULL)
{
printf("读取文件失败,请您检查!\n");
getchar();
exit (1);
}
printf("************************************************\n");
printf("请您输入要查询的姓名:");
scanf("%s",s);
for(i=0;i<M;i++)
{
fread(&t[i],sizeof(Referbook),1,fp);
if(strcmp(t[i].Sname,s)==0)
j=i;break;
}
fseek(fp,j*sizeof(Referbook),0);
fread(&t[j],sizeof(Referbook),1,fp);
printf("**************************************************\n");
printf("您要查找的人的信息为:\n");
printf("==========学号==========姓名==========地址========\n");
printf("%s\t%s\t%s",t[j].Sno,t[j].Sname,t[j].Address);
printf("\n");
printf("**************************************************\n");
printf("\n");
fclose(fp);
}
下面是我在VC++6.0条件下运行时候的错误提示,还请高手指出为什么啊:
-------------------Configuration: 通讯录 - Win32 Debug--------------------
Compiling...
通讯录的主函数.cpp
g:\microsoft visual studio\myprojects\通讯录\通讯录.h(77) : error C2018: unknown character '0xa3'
g:\microsoft visual studio\myprojects\通讯录\通讯录.h(77) : error C2018: unknown character '0xac'
g:\microsoft visual studio\myprojects\通讯录\通讯录.h(77) : error C2660: 'fopen' : function does not take 1 parameters
执行 cl.exe 时出错.
通讯录的主函数.obj - 1 error(s), 0 warning(s)
还请大家指点一二,找出其中的错误。
这个是主函数:(通讯录的主函数.cpp)
#include"通讯录.h"
#include"stdio.h"
#include"stdlib.h"
void main()
{
user();
}
这个是头文件:(通讯录.h)
#include"string.h"
#include"stdio.h"
#include"stdlib.h"
#define M 100
/*定义数据结构*/
typedef struct book{
char Sno[15];
char Sname[8];
char Address[40];
}Referbook;
Referbook t[M];
/*函数原型声明*/
void Add();
void DELETE();
void Find();
void Exit();
/*用户界面设计*/
void user()
{
int m;
printf("******************MENUE********************\n");
printf("********* **************\n");
printf(" 欢迎您的使用! \n");
printf("********* **************\n");
printf("*******************************************\n");
printf(" 1.添加记录\n");
printf(" 2.删除记录\n");
printf(" 3.查找记录\n");
printf(" 4.推出\n");
printf("*******************************************\n");
printf("请您选择所需要的操作(1-4):");
scanf("%d",&m);
if(m<1&&m>4)
{
printf("您的选择有误,请重新输入:");
scanf("%d",&m);
}
else
{
switch(m)
{
case 1:Add();break;
case 2:break;
case 3:Find();break;
default:;
}
}
}
void Add()
{ Referbook t[M];
FILE *p;
int i,j;
printf("请输入要增加的记录数:\n");
scanf("%d",&i);
if((p=fopen("G:\\C.txt","a+"))==NULL)
if((p=fopen("G:\\C.txt","wb"))==NULL)
{
printf("打开文件失败,请检查!\n");
getchar();
exit (1);
}
printf("**********学号*********姓名**********地址********\n");
for(j=0;j<i;j++)
{
scanf("%s%s%s",t[j].Sno,t[j].Sname,t[j].Address);
fwrite(&t[j],sizeof(Referbook),1,p);
}
fclose(p);
}
void Find()
{
Referbook t[M];
char s[10];
int i,j;
FILE *fp;
if((fp=fopen("G:\\C.txt","r"))==NULL)
{
printf("读取文件失败,请您检查!\n");
getchar();
exit (1);
}
printf("************************************************\n");
printf("请您输入要查询的姓名:");
scanf("%s",s);
for(i=0;i<M;i++)
{
fread(&t[i],sizeof(Referbook),1,fp);
if(strcmp(t[i].Sname,s)==0)
j=i;break;
}
fseek(fp,j*sizeof(Referbook),0);
fread(&t[j],sizeof(Referbook),1,fp);
printf("**************************************************\n");
printf("您要查找的人的信息为:\n");
printf("==========学号==========姓名==========地址========\n");
printf("%s\t%s\t%s",t[j].Sno,t[j].Sname,t[j].Address);
printf("\n");
printf("**************************************************\n");
printf("\n");
fclose(fp);
}
下面是我在VC++6.0条件下运行时候的错误提示,还请高手指出为什么啊:
-------------------Configuration: 通讯录 - Win32 Debug--------------------
Compiling...
通讯录的主函数.cpp
g:\microsoft visual studio\myprojects\通讯录\通讯录.h(77) : error C2018: unknown character '0xa3'
g:\microsoft visual studio\myprojects\通讯录\通讯录.h(77) : error C2018: unknown character '0xac'
g:\microsoft visual studio\myprojects\通讯录\通讯录.h(77) : error C2660: 'fopen' : function does not take 1 parameters
执行 cl.exe 时出错.
通讯录的主函数.obj - 1 error(s), 0 warning(s)