gpt4 book ai didi

c - 帮助将 Strcmp() 与二进制文件一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:52 25 4
gpt4 key购买 nike

我有一个函数 void display_a_student(),它使用两个二进制文件。首先是 binary1.dat 和 index.dat,其中包含添加到 binary1.dat 的每个学生的偏移量。

我正在尝试使用索引来查找用户输入的学生的偏移值,但我无法使用 strcmp() 函数将输入的值与 index.dat 文件中保存的值进行比较.

任何帮助将不胜感激,这里是到目前为止的代码。

void display_a_student()
{
struct student aStudent;

char studentNumSearch[11];
int index=0;
int found = false;

fp = fopen("binary1.dat", "a+b");
fp1 = fopen("index.dat", "a+b");

printf("\n\nWhich student are you searching for?");
scanf("%s", studentNumSearch);
fflush(stdin);

while(!found && index < 10)
{
if(strcmp(studentNumSearch,fp1[index].studentNum)==0)
{
found = true;
}
index++;
}

if (found)
{
fseek(fp, fp1[index].offset, SEEK_SET);
fread(&aStudent,sizeof(struct student),1,fp);
printf("\n\nThe student name is %s\n",aStudent.firstName);
}
else
{
printf("\n\nNo such student\n");

}

fclose( fp ); /* fclose closes file */
fclose (fp1);
getchar();

}

我确定这一行:if(strcmp(studentNumSearch,fp1[index].studentNum)==0)是我出错的地方,因为我不确定在使用 strcmp() 函数时如何指向文件。- 编辑相关代码。

最佳答案

strcmp 用于字符串比较。使用 memcmp 进行二进制比较。

主要问题是您对 fp1[index] 的访问。当您访问从未分配的 FILE 元素时,这将不起作用。 fp1 不是一个数组,而是一个 FILE 指针。

您需要使用fscanffread 从文件中读取并使用fseek 根据索引和大小在文件中正确定位每个条目。

关于c - 帮助将 Strcmp() 与二进制文件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com