回 帖 发 新 帖 刷新版面

主题:运行错误的讨论

我编写了一个通讯录程序,其中的一些和文件打开有关的出了点问题(程序还没有写完)。
还请大家指点一二,找出其中的错误。
这个是主函数:(通讯录的主函数.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)

回复列表 (共4个回复)

沙发

if((fp=fopen("G:\\C.txt"[color=FF0000],[/color]"r"))==NULL)//符号写错了
    {
        printf("读取文件失败,请您检查!\n");
        getchar();
        exit (1);
    }
你用的汉字的逗号,应该是英语的逗号。

板凳

我是新手,没搞明白你的到底是c++程序还是c程序。
按理说,你的函数是cpp的,可是cpp里面好像输出流不用printf,用cout。也没有stido.h。是iostream.h。说不是c++吧,还是在vc++6.0里面运行……

也许是我的问题,只是提出几个疑点,大家帮我解惑啊,谢谢了
我先试下printf在vc++6.0里面有用没……

3 楼

不好意思,是我错了,还真行……

4 楼


C的代码同样可以在VC++6..0下运行啊。呵呵~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册