c - fread 不起作用

标签 c struct fread fseek

我尝试读取我的 FILE* fp 指向的文件,我想知道文件的末尾在哪里。因此,我使用 fseek(); 在文件末尾,我想从我的 structure data 中写入数据。

void printData(FILE *fp)
{
    struct data tmp;
    fseek(fp,0,SEEK_END);
    while(fread(&tmp,sizeof(struct data),1,fp) > 0)
    {
        puts("test2");
        printf("Vorname: %s\n",tmp.vorname);
        printf("Nachname: %s\n",tmp.name);
        printf("Adresse: %s\n",tmp.adresse);

    }
}

我的结构是这样定义的:

struct data
{
    char name[30];
    char vorname[20];
    char adresse[50];
};

我的问题是,while 循环一次都没有执行。我是不是忘记了什么?

最佳答案

fseek(fp,0,SEEK_END) 将文件指针定位在文件的末尾(起始点文件末尾的偏移量为 0),当您随后尝试从文件中读取 fread 时当然不读任何东西。

而是以追加模式打开文件并写入记录数,这些将被追加到文件中。

关于c - fread 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360439/

相关文章:

c - 在C语言中,如何从2个中选择将某个东西分配给某个东西?

c - 如何设置 fread 的起点?

php - 客户端断开连接时 PHP 脚本是否中止?

c - 如何检查 fwrite() 在 C 中是否有效?

c++ - 从 .txt 文件中读取 UNICODE 字符并将它们输出到控制台

c - 这个是casting吗,这个是什么and运算符

连接两个 64 位整数并将其存储到 [16] 的 uint8_t 数组中

c - 使用方法链时释放指针的正确方法

c - 在 C 中引用结构成员的不同方式

C结构,指针