海绵爱上星 发表于 2018-9-2 19:49:48

C fwrite


C fwrite 写入的结果是乱码????

fp = fopen("data.txt","w") ;
我用 fwrite ( & stu [ i ] ,sizeof (struct student ) ,1 ,fp )   结果保存的txt 文件打开是乱码。

一杯咖啡不加糖 发表于 2018-9-2 20:12:24

你用wb试试

claws0n 发表于 2018-9-2 20:39:58

倒转了?
fwrite(&stu, 1, sizeof(struct student), fp);

海绵爱上星 发表于 2018-9-2 20:48:02

claws0n 发表于 2018-9-2 20:39
倒转了?
fwrite(&stu, 1, sizeof(struct student), fp);

没有。。

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

       其中,ptr:指向保存数据的指针;size:每个数据类型的大小;count:数据的个数;stream:文件指针

     函数返回写入数据的个数。

人造人 发表于 2018-9-3 00:10:06

什么时候fwrite可以直接写结构体还不乱码?

weizhongyang 发表于 2018-9-3 17:15:57

文件格式是不是不对,得用UTF-8的格式试试

海绵爱上星 发表于 2018-9-3 20:13:43

人造人 发表于 2018-9-3 00:10
什么时候fwrite可以直接写结构体还不乱码?

这是我看的一本《c语言项目开发》上面的。。。你的意思是不管是wb还是UTF-8都不行吗?

人造人 发表于 2018-9-3 23:13:49



#include <stdio.h>

struct Student
{
        char name;
        int age;
        int score;
};

void WriteFile(FILE *file, struct Student *s)
{
        fprintf(file, "%s\t%d\t%d", s->name, s->age, s->score);
        fprintf(file, "\n");
}

int main(void)
{
        struct Student s = {{"小红", 13, 97}, {"小丽", 15, 90}, {"小玲", 16, 98}};
        FILE *file = fopen("Student.dat", "w");
       
        fprintf(file, "姓名\t年龄\t分数\n");
        WriteFile(file, &s);
        WriteFile(file, &s);
        WriteFile(file, &s);
        fclose(file);
        return 0;
}

DadingVIP 发表于 2018-9-6 11:02:46

fwrite函数是以二进制形式对文件进行操作的,使用fwrite函数进行结构体数组操作势必会出现错误
页: [1]
查看完整版本: C fwrite