c - 在二进制文件上搜索记录

标签 c binaryfiles

我试图通过搜索名称来查找二进制文件中是否存在记录。
似乎我没有做正确的事情,因为我的“if”的返回无论输入如何,当它不存在时总是会找到它。
调试器指出“if = 表达式中的语法错误”,我没有看到它。

#ifndef DATA_PLAYER_H_INCLUDED
#define DATA_PLAYER_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Player
{
    char nome[50];
    int pontos;
}Players;

void ViewPont();
void SearchPont();
#endif // DATA_PLAYER_H_INCLUDED

--

#include "DATA_PLAYER.h"

void ViewPont()
{
    Players pl;
    FILE *fp;
    int i, pontos;

    fp = fopen("Pontuacoes.dat", "rb+");

        while((fread(&pl, sizeof(Players),1, fp)) != 0 )
    {
        printf("%s %d\n", pl.nome, pl.pontos);
    }

    fclose(fp);
}

void SearchPont()
{
    char nam[50];
    char ch;
    Players pl;
    FILE * fp;

    fp = fopen("Pontuacoes.dat","rb+");

    printf("\n nome das pont\n");
    fflush(stdout);
    scanf("%s", nam);

    printf("%s", nam);

    while((fread(&pl, sizeof(Players),1, fp)) != 0)
    {
        if((strcmp(pl.nome, nam))==0);
        {
            printf("\nregisto encontrado\n");
        }

    }
fclose(fp);

}

最佳答案

我傻了……

if(strcmp(pl.nome, nam) ==0);

->;那个小细节......

if(strcmp(pl.nome, nam) ==0)

关于c - 在二进制文件上搜索记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965778/

相关文章:

c++ - 开源 C 或 C++ 嵌入式关系数据库(复制源代码进行部署)

c - 为什么没有打印任何内容? C语言编程

c - C 中的作用域解析

python - 从命名管道、C 程序(编写器)和 Python(读取器)获取额外数据

c++ - 将包含 0 &1 的文本文件转换为二进制文件

c++ - 在 Visual Studio 中的 C++ 可执行文件中静态包含大型二进制文件

c++ - 从具有多种类型的 C++ 文件中读取结构

c - 使用 sigaction 处理信号

visual-studio - 由于二进制文件而导致 SVN 合并冲突

c - 将 "blank"数据 block 分配给 .dat 文件的最简单方法