C 显示记录功能,显示非空记录,不显示记录

C 显示记录功能,显示非空记录,不显示记录,c,C,设置一个数据库,该数据库接收用户的输入(名字、姓氏、ID号等),并将信息输入到二进制文件中,以更新信息、删除记录和更新提供的任何信息。除了显示非空记录的功能外,所有其他功能似乎都正常工作(不要介意坏代码,我对编程相当陌生)。信息似乎被保存到文件中,因为其他函数可以访问它(都是相同的文件指针)。我已经检查了文件是否被空文件的初始化所覆盖,据我所知,情况并非如此 我已经检查了文件是否被空文件的初始化所覆盖,据我所知,情况并非如此。我还尝试更新DisplayRecord函数中的if语句,以便它读取所有

设置一个数据库,该数据库接收用户的输入(名字、姓氏、ID号等),并将信息输入到二进制文件中,以更新信息、删除记录和更新提供的任何信息。除了显示非空记录的功能外,所有其他功能似乎都正常工作(不要介意坏代码,我对编程相当陌生)。信息似乎被保存到文件中,因为其他函数可以访问它(都是相同的文件指针)。我已经检查了文件是否被空文件的初始化所覆盖,据我所知,情况并非如此

我已经检查了文件是否被空文件的初始化所覆盖,据我所知,情况并非如此。我还尝试更新DisplayRecord函数中的if语句,以便它读取所有文件并仅显示具有已建立ID号的文件,但在函数运行时仍显示null

   // fopen opens the file; exits if file cannot be opened
   if ((cPtr = fopen("patient.dat", "rb")) == NULL) {
  puts("File could not be opened.");
   }//end If
   else {

 printf( "Patient ID\t Last Name\t first name\t DOB \tGender\t Doctor ID\t 
 Doctor last name\t Room Number\n" );

 struct PatientData {
 unsigned int Pat_ID; //ID number
 char F_Name[25];//first name
 char L_Name[25]; //last name
 char Phone_num[20] ; //Phone number
 char gender[2];
 unsigned int doctor_ID;
 char doc_LN[25];
 unsigned int room_num;
 char DoB[10];
};

 //read all records until eof
 while(!feof(cPtr)){

 //create blank set to compare to data on file
  struct PatientData Patient= { 0, "","","","",0,"", 0,"" };

  int result=fread(&Patient,sizeof(struct PatientData), 1 , cPtr);

  if(result!=0 && Patient.Pat_ID!=0){
     printf("%-d%-15s%-15s%-10s%-12s%-15d%-15s%-10d\n",
     Patient.Pat_ID, 
     Patient.L_Name,Patient.F_Name,Patient.DoB,Patient.gender,
     Patient.doctor_ID, Patient.doc_LN,Patient.room_num);
  }
  fclose(cPtr); // fclose closes the file

它假定显示所有包含信息的记录。但是实际的输出没有显示任何记录。< /P>是C还是C++?看起来像C。您的问题需要有正确的语言标记,并添加
PatientData
结构的定义。方便阅读:请发布一条消息,这样我们可以重现问题,以便帮助您调试。关于:
if(result!=0&
调用
read()
可以返回负值。(这将导致表达式的计算结果为
true
。这不是您想要的。建议:
if(result>0&
OT:about:
struct PatientData Patient={0;
不需要初始化结构实例:
Patient
,因为对
read()的以下调用完全覆盖这个C或C++?看起来像C.的问题,有正确的语言标记,并添加了<代码> PurraseDATAs//>结构的定义。方便阅读:请发布一个我们可以复制的问题,这样我们可以帮助你调试它。关于:<代码>(结果!=0 & & /代码>调用到<代码> >()
可以返回负值。(这将导致该表达式的计算结果为
true
。这不是您想要的。建议:
如果(结果>0&&
OT:about:
struct PatientData Patient={0;
不需要初始化结构实例:
Patient
,因为对
read()
的以下调用将完全覆盖它