C++编译时出现fatal error C1004: unexpected end of file found

coolnut 2010-06-08 07:09:11
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct goods_list
{
int id; /*商品条形码编号*/
char name[30]; /*商品名称*/
double price; /*商品价格*/
int number; /*商品的数量*/
char produce[30]; /*生产商*/
char date[30]; /*生产日期*/
};


void add_goods(); /*函数声明*/
void search_goods();
void amend_goods();
void delete_goods();
void type_goods();
void exit_program();
void menu();
void initialization();

int main(void)
{
printf("\t\t\t☆☆☆☆☆☆☆☆☆☆【欢迎进入超市商品信息管理系统】☆☆☆☆☆☆☆☆☆☆\n");
printf("\t\t\t按任意键继续\n");
getch();
system("cls");
menu();
initialization();
menu();
return 0;
}





/*初始化*/
void initialization()
{
FILE *fp;
struct goods_list i={1,"东莞米粉",8.8,1000,"东莞","2010年6月1日"};
if((fp=fopen("goods_list.txt","w"))==NULL)
{
printf("\t\t\t打开文件出现错误,请您重试");
exit(0);
}
fwrite(&i,sizeof(struct goods_list),1,fp);
fclose(fp);
}

/*主界面菜单即是选择功能菜单*/
void menu()
{
int choice;
printf("系统提供的服务如下:1:录入新物品信息\n2:查询系统物品信息\n 3:修改系统物品信息\n 4:删除系统物品信息\n 5:打印所需物品信息\n 6:退出\n");
printf("请输入您要选择的菜单:");
scanf("%d",&choice);
switch(choice)
{
case 1:
add_goods();
break;
case 2:
search_goods();
break;
case 3:
amend_goods();
break;
case 4:
delete_goods();
break;
case 5:
type_goods();
break;

case 6:
exit_program();
break;

default:
printf("\t\t\t输入无效,请您重新输入");
getch();
system("cls");
menu();

}
}




















/*录入新物品信息*/

int panduanID(int id){ /*判断所输条形码编号是否已存在*/
FILE *fp; ;
struct goods_list i;

if((fp=fopen("goods_list.txt","r"))==NULL)
{

printf("\t\t\t打开文件出现错误!请您重试");

exit(0);

}
fread(&i,sizeof(struct goods_list),1,fp);

while(!feof(fp))

{
if(i.id==id)

{

fclose(fp);

return 1;

break;
}
fread(&i,sizeof(struct goods_list),1,fp);
}
fclose(fp);
return 0;
}
void add(){
struct goods_list i;
char choice;
FILE *fp;
if((fp=fopen("goods_list.txt","ab"))==NULL)
{
printf("\t\t\t 打开文件出现错误!请您重试");
exit(0);
}
labID:
printf("\n\t请输入要录入新物品信息\n");
printf("\t\t\t 物品的条形码编号:");
scanf("%d",&i.id);
if(panduanID(i.id)==1)
{
printf("\t\t\t此条形码编号已被使用,请您重新输入");
goto labID;
}
printf("\t\t\t 物品的名称:");
scanf("%s",i.name);

printf("\t\t\t 物品的价格:");
scanf("%f",&i.price);

printf("\t\t\t 物品的数量:");
scanf("%d,&i.number");

printf("\t\t\t 物品的产地:");
scanf("%s",i.produce);

printf("\t\t\t 物品的生产日期:");
scanf("%s",i.date);

fwrite(&i,sizeof(struct goods_list),1,fp);
fclose(fp);
printf("\t\t\t\t\t\t 物品信息录入成功!!!\n");

printf("\n您想继续添加吗?(Y/N)");

scanf("%c",&choice);
if(choice=='Y'){
add();
}
else system("cls");
menu();
}








/*查询系统物品信息*/

void search(){
FILE *fp;
int fID;
char choice;
struct goods_list i;

if((fp=fopen("goods_list.txt","r"))==NULL)
{
printf("打开文件错误!请您重试");
exit(0);
}

czID:
printf("\t\t\t 请输入要查询的物品的条形码编号");
scanf("%d",&fID);
scanf("%d",&fID);

fread(&i,sizeof(struct goods_list),1,fp);
while(!feof(fp))
{
if(i.id==fID)
{printf("\t\t◇◇◇◇◇◇◇◇◇◇物品信息◇◇◇◇◇◇◇◇◇◇");
printf("\t\t物品的条形码编号:%4d\n",i.id);

printf("\t\t物品名称:%4d\n",i.name);

printf("\t\t-----------------------------------------");

printf("\t\t物品价格:%4d\n",i.price);

printf("\t\t-----------------------------------------");

printf("\t\t物品数量:%4d\n",i.number);

printf("\t\t-----------------------------------------");

printf("\t\t生产厂家:%4d\n",i.produce);

printf("\t\t-----------------------------------------");

printf("\t\t生产日期:%4d\n",i.date);

printf("\t\t-----------------------------------------");

printf("\t\t你想继续查询吗?(Y/N)");

scanf("%c",&choice);

if(choice=='Y')

{ search();
}
else {system("cls");
menu();
}
fread(&i,sizeof(struct goods_list),1,fp);
{
fclose(fp);
printf("\t\t\t输入的条形码编号不存在,请您重新输入");

goto fID;
}}
...全文
5883 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-10-21
  • 打赏
  • 举报
回复
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
yusup45 2011-10-21
  • 打赏
  • 举报
回复
你也可以编一个检查括号匹配程序来检查
yusup45 2011-10-21
  • 打赏
  • 举报
回复
我也遇到过这样的问题




一般缺少大口号会出现这种错误!
stilling2006 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yunfeng7854 的回复:]
search()少两个'}',另外最后应该是goto czID,还有几个函数没有定义。赞楼上
[/Quote]

Up


另外,如果你用的是vs开发环境的话,用VX插件补充下。
cattycat 2010-06-09
  • 打赏
  • 举报
回复
看是不是少了大括号。
用visual assist助手吧,能帮你把格式弄好一点,就不会出现少了括号之类错误。
yunfeng7854 2010-06-09
  • 打赏
  • 举报
回复
可以读取的呀,我稍微改了一下测试了一下,是可以的,文件内容应该是不能手动添加的,好像内容都是字符形式的,比如输出编号为1,在文件里是看不到的
coolnut 2010-06-08
  • 打赏
  • 举报
回复
在吗?楼上的朋友
coolnut 2010-06-08
  • 打赏
  • 举报
回复
我找了很久都没找出来,真的非常感谢,还有知道这个程序为什么不可都文件里面得信息?
yunfeng7854 2010-06-08
  • 打赏
  • 举报
回复
search()少两个'}',另外最后应该是goto czID,还有几个函数没有定义。赞楼上
yunfeng7854 2010-06-08
  • 打赏
  • 举报
回复
search()少两个'}',另外最后应该是goto czID
yunfeng7854 2010-06-08
  • 打赏
  • 举报
回复
search()少两个'}',另外最后应该是goto czID,还有几个函数没有定义
机智的呆呆 2010-06-08
  • 打赏
  • 举报
回复
可能导致上述问题的原因:
1 main函数里大括号没有匹配
2 struct定义}后没有分号
3 如果用vc,使用预编译头文件没有include预编译头文件,默认include<stdafx.h>
....

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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