Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何显示价格低于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 - Fatal编程技术网

如何显示价格低于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.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

我假设您希望在屏幕上显示价格低于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我假设您希望在屏幕上显示价格低于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];