如何显示价格低于70.00的所有书籍。从读取文件开始? struct book{ int代码; 字符标题[20]; char作者[20]; 字符发布器[20]; 焦年[4]; 双倍价格; }; 结构书book1,mybook[100]; 文件*tf,*bf; int main(){ int i; tf=fopen(“mybook.txt”、“r”); bf=fopen(“myEbooks”、“wb”); 对于(i=1;i
我假设您希望在屏幕上显示价格低于70的书籍 此外,您正在读取100个结构。如果您正好写入100个结构,则这是正常的。如果少于100个,则无法正确打印。您可以通过检查如何显示价格低于70.00的所有书籍。从读取文件开始? struct book{ int代码; 字符标题[20]; char作者[20]; 字符发布器[20]; 焦年[4]; 双倍价格; }; 结构书book1,mybook[100]; 文件*tf,*bf; int main(){ int i; tf=fopen(“mybook.txt”、“r”); bf=fopen(“myEbooks”、“wb”); 对于(i=1;i,c,C,我假设您希望在屏幕上显示价格低于70的书籍 此外,您正在读取100个结构。如果您正好写入100个结构,则这是正常的。如果少于100个,则无法正确打印。您可以通过检查fread的返回值来更改此设置。如果为1,则表示已成功读取一个结构 在第二个文件中 struct book{ int code; char title[20]; char author[20]; char publisher[20]; char year[4]; double price
fread
的返回值来更改此设置。如果为1,则表示已成功读取一个结构
在第二个文件中
struct book{
int code;
char title[20];
char author[20];
char publisher[20];
char year[4];
double price;
};
int main(){
int data;
int record;
double price;
struct book book1;
FILE * bf;
bf = fopen("myEbooks", "rb");
fseek(bf,1,SEEK_END);
record = (ftell(bf)/sizeof(struct book));
rewind(bf);
printf("Title\t\t Code\t\tAuthor\t\tPublisher\t Year\tPrice\n");
for(data=0;data<100;data++){
fread(&book1, sizeof(struct book), 1, bf);
printf("%s\t\t %i\t %s\t %s\t %s\t %0.2lf\n", book1.title, book1.code, book1.author, book1.publisher, book1.year, book1.price);
}
fclose(bf);
return 0;
}
while(fread(&book1,sizeof(structbook),1,bf)==1)
{
如果(book1.price我假设您希望在屏幕上显示价格低于70的书籍
此外,您正在读取100个结构。如果您正好写入100个结构,则这是正常的。如果少于100个,则无法正确打印。您可以通过检查fread
的返回值来更改此设置。如果为1,则表示已成功读取一个结构
在第二个文件中
struct book{
int code;
char title[20];
char author[20];
char publisher[20];
char year[4];
double price;
};
int main(){
int data;
int record;
double price;
struct book book1;
FILE * bf;
bf = fopen("myEbooks", "rb");
fseek(bf,1,SEEK_END);
record = (ftell(bf)/sizeof(struct book));
rewind(bf);
printf("Title\t\t Code\t\tAuthor\t\tPublisher\t Year\tPrice\n");
for(data=0;data<100;data++){
fread(&book1, sizeof(struct book), 1, bf);
printf("%s\t\t %i\t %s\t %s\t %s\t %0.2lf\n", book1.title, book1.code, book1.author, book1.publisher, book1.year, book1.price);
}
fclose(bf);
return 0;
}
while(fread(&book1,sizeof(structbook),1,bf)==1)
{
如果(book1.price假设记录数小于100
,则需要将最后一个fscanf
的第一个代码片段更改为仅读取mybook.txt
中记录的次数
while(fread(&book1, sizeof(struct book), 1, bf) == 1)
{
if (book1.price <= 70)
{
printf("%s\t\t %i\t %s\t %s\t %s\t %0.2lf\n", book1.title, book1.code, book1.author, book1.publisher, book1.year, book1.price);
}
}
另外,对于第二个代码片段,您需要将100
更改为record
,并具有类似book1.price<70
的条件,以便仅打印价格低于70
的书籍
if(fscanf(tf,"%lf\n", &book1.price) != EOF)
fwrite(&book1, sizeof(struct book),1, bf);
else
break;
for(数据=0;数据<记录;数据++)
{
fread(&book1,sizeof(结构书),1,bf);
如果(第1册价格<70)
printf(“%s\t\t%i\t%s\t%s\t%s\t%0.2lf\n”,
book1.title,book1.code,book1.author,book1.publisher,
book1.year,book1.price);
}
假设记录数小于100
,您需要将最后一个fscanf
的第一个代码片段更改为仅读取mybook.txt
中记录的次数
while(fread(&book1, sizeof(struct book), 1, bf) == 1)
{
if (book1.price <= 70)
{
printf("%s\t\t %i\t %s\t %s\t %s\t %0.2lf\n", book1.title, book1.code, book1.author, book1.publisher, book1.year, book1.price);
}
}
另外,对于第二个代码片段,您需要将100
更改为record
,并具有类似book1.price<70
的条件,以便仅打印价格低于70
的书籍
if(fscanf(tf,"%lf\n", &book1.price) != EOF)
fwrite(&book1, sizeof(struct book),1, bf);
else
break;
for(数据=0;数据<记录;数据++)
{
fread(&book1,sizeof(结构书),1,bf);
如果(第1册价格<70)
printf(“%s\t\t%i\t%s\t%s\t%s\t%0.2lf\n”,
book1.title,book1.code,book1.author,book1.publisher,
book1.year,book1.price);
}
考虑将MyBooks
文件的一部分与您的问题一起发布,以便人们可以测试您的代码!如果您可以在mybook.txt中添加数据,这样我们就可以复制代码,并进行您想要的特定更改,这将在为您提供提示和正确答案方面发挥重要作用。如果结构定义包含在两个程序包含的头文件中。这样,您可以确保两个程序在结构上都一致,这一点非常重要。我看不出有什么不同,但从长远来看,冒着不一致的风险是愚蠢的。您不检查任何I/O操作。尤其是,您不检查t检查读取操作是否成功。char year[4];
-->char year[4+1]
考虑将MyBooks
文件的一部分与您的问题一起发布,以便人们可以测试您的代码!如果您可以在mybook.txt中添加数据,这样我们就可以复制代码,并进行您想要的特定更改。它在为您提供提示和正确答案方面起着重要作用。如果我f结构定义位于两个程序包含的头文件中。这样,您可以确保两个程序在结构上都一致,这一点至关重要。我看不出有什么不同,但从长远来看,冒着不一致的风险是愚蠢的。您不检查任何I/O操作。尤其是,您不检查“t检查读取操作是否成功。char year[4];
-->char year[4+1];