Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
来自二进制文件c++;-涡轮增压器c 我正在研究C++和Turbo C. < /P>_C++ - Fatal编程技术网

来自二进制文件c++;-涡轮增压器c 我正在研究C++和Turbo C. < /P>

来自二进制文件c++;-涡轮增压器c 我正在研究C++和Turbo C. < /P>,c++,C++,我想显示提交到二进制文件的所有记录,但我的代码只显示第二条记录,不显示所有记录。 例如,如果向文件中添加10条记录,则在报告中显示10条记录,但它们是一条,并且仅重复到这10行 我的密码 //My struct struct { char name[20]; char id[2]; char publisher[20];} books, listbooks[100]; //Codes for add records to file FILE *pt; pt=fopen("book

我想显示提交到二进制文件的所有记录,但我的代码只显示第二条记录,不显示所有记录。 例如,如果向文件中添加10条记录,则在报告中显示10条记录,但它们是一条,并且仅重复到这10行

我的密码

//My struct
struct {
 char name[20];
 char id[2];
 char publisher[20];} books, listbooks[100];

//Codes for add records to file
   FILE *pt;
 pt=fopen("books.dat","a");
 clrscr();
  printf("\t Please Enter Data for new book");
  printf("\n Please enter Name:");
  scanf("%s", &books.name );
  printf("Please enter ID:");
  scanf("%s", &books.id);
  printf("Please enter Publisher:");
  scanf("%s", &books.publisher);
fwrite(&books, sizeof(books), 1,pt);
fclose(pt);

//Codes for show report
 FILE *pt;
 pt=fopen("books.dat","r");
 int i=0;
 printf("Book Name: \t\t\t");
 printf("Book ID: \t\t\t");
 printf("Book Publisher: \n");
 do{
  i++;
  fseek (pt,sizeof(listbooks[i]), 0);
  fread(&listbooks[i], sizeof(listbooks[i]), i,pt);
    printf("%s \t\t\t\t", listbooks[i].name);
    printf("%s \t\t\t\t", listbooks[i].id);
    printf("%s \n", listbooks[i].publisher);
    if(i>=4) break;
 }while(!feof(pt));
我的问题在“//代码显示报告”块中,请帮助我


谢谢。

在do while循环中,您总是
fseek
ing到sizeof(您的记录类型)。这意味着后续的
fread
将始终读取文件中的第二条记录

删除调用<代码> fDebug < /C> > < /P> 1)Turbo C不做C++。2)Turbo C++不接近现代C++,学习Turbo C++是对自己的一种伤害。3)这看起来不像C++。