在struct之前的错误预期表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在struct之前的错误预期表达式相关的知识,希望对你有一定的参考价值。
阻止我的代码编译的错误是:
[错误]预期标识符或'(''''''令牌之前
[错误]'书籍'之前的预期表达
[错误]函数'fread'的参数太少
我是C编程和编程的新手。虽然我习惯了Pascal。除主菜单和void菜单外,所有函数都会出现错误。这只是我代码的一部分。
请有人帮我解决这个程序的错误。
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
char catergories[][15]={"Computer","Philosophy","Arts","Literature","Science","History"};
void menu(void);
void addbooks(void);
void deletebooks(void);
void updatebooks(void);
void findbooks(void);
void sellbooks(void);
void viewbooks(void);
int enterinfo();
int checkid(int);
void Password();
//list of global files that can be accessed from anywhere in program
FILE *fp,*ft,*fs;
//list of global variable
int s;
char findbook;
char password[10]={"dominique"};
typedef struct
{
int mm,dd,yy;
}OrderDate;
typedef struct
{
int id;
char name[35];
char author[35];
int quantity;
float price;
int count;
int shelf;
char *cat;
struct OrderDate *sold;
}books;
void addbooks(void) //funtion that add books
{
system("cls");
int i;
struct books;
printf("
******************************************************
");
printf("
ADD A BOOK");
printf("
******************************************************
");
printf("
SELECT THE CATERGORY OF THE BOOK:");
printf("
1. Computer Science, Information & General Works");
printf("
2. Philosophy, Psychology and Religion");
printf("
3. Arts and Recreation");
printf("
4. Literature");
printf("
5. Science");
printf("
6. History and Geography");
printf("
7. Back to main menu
");
printf("
Enter your choice:");
scanf("%d",&s);
if(s==7)
{
menu() ;
}
system("cls");
fp=fopen("BookRecords.txt","ab+");
if(enterinfo()==1)
{
books.cat=catergories[s-1]; //the error that exists here states expected identifier or '(' before '.' token
fseek(fp,0,SEEK_END);
fwrite(&books,sizeof(books),1,fp); //the error that exists here states expected expression before 'books'
fclose(fp);
printf("
The book's information has been saved sucessfully");
printf("
Would you like to save more information? (Y/N):");
if(getch()=='n')
{
menu();
}
else
system("cls");
addbooks();
}
}
答案
struct books;
books
是你的类型名称。像int
或char
。这就是为什么books.id==d
不起作用。你必须声明作为书籍类型的变量。例如:
books BooksInMyShop;
现在您可以在代码中使用您的变量:
if(BooksInMyShop.id == currentId)
PS1:当您定义:
typedef struct
{
(...)
}books;
你不需要通过struct books BooksInMyShop;
声明变量简单的books BooksInMyShop;
现在可以工作。
PS2:我可以在你的代码中看到许多错误观念。例如,在每个函数中的“变量”books
不在它们之间共享。我想你必须将你的bookstore
的一个实例传递给每个函数或者有一个静态全局实例。
以上是关于在struct之前的错误预期表达式的主要内容,如果未能解决你的问题,请参考以下文章
错误:“。”标记之前的预期 unqualified-id //(结构)