c语言结构体读写到二进制文件,C++二进制文件的读取与写入

本文目录一览:

C语言 结构体指针字符 二进制文件写入和读取

当然不对了,你的结构体成员,是一个指针

sizeof(student) ,win32是4字节,win64是8字节

当读入其中4个或8个字节时,它指向的指针地址并不一定存在

你可以定义为一个字符数组

c语言中怎么把一个结构体数组写入文件

C语言把一个结构体数组写入文件分三步:

1、以二进制写方式(wb)打开文件

2、调用写入函数fwrite()将结构体数据写入文件

3、关闭文件指针

相应的,读文件也要与之匹配:

1、以二进制读方式(rb)打开文件

2、调用读文件函数fread()读取文件中的数据到结构体变量

3、关闭文件指针

参考代码如下:

#includestdio.h

struct stu {

char name[30];

int age;

double score;

};

int read_file();

int write_file();

int main()

{

if ( write_file()  0 ) //将结构体数据写入文件

return -1;

read_file(); //读文件,并显示数据

return 0;

}

int write_file()

{

FILE *fp=NULL;

struct stu student={“zhang san”, 18, 99.5};

fp=fopen( “stu.dat”, “wb” ); //b表示以二进制方式打开文件

if( fp == NULL ) //打开文件失败,返回错误信息

{

printf(“open file for write error\n”);

return -1;

}

fwrite( student, sizeof(struct stu), 1, fp ); //向文件中写入数据

fclose(fp);//关闭文件

return 0;

}

int read_file()

{

FILE *fp=NULL;

struct stu student;

fp=fopen( “stu.dat”, “rb” );//b表示以二进制方式打开文件

if( fp == NULL ) //打开文件失败,返回错误信息

{

printf(“open file for read error\n”);

return -1;

}

fread( student, sizeof(struct stu), 1, fp ); //读文件中数据到结构体

printf(“name=\”%s\” age=%d score=%.2lf\n”, student.name, student.age, student.score ); //显示结构体中的数据

fclose(fp);//关闭文件

return 0;

}

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

(1)buffer:指向结构体的指针(数据首地址)   

(2)size:一个数据项的大小(一般为结构体大小)

(3)count: 要写入的数据项的个数,即size的个数   

(4)stream:文件指针。

C语言编程学生信息结构体,保存文本文件或二进制文件中.求大神知道啊。

你需要用到打开文本或者创建一个文本写入相关的知识,当然还有结构体;

(“结构体”跟“C语言文件”请自行百度百科)

//首先定义学生结构体

struct strudent{

int score;

int num;}

然后当然他有各种数据

然后在main()函数中用到fopen;

*f=fopen(“x://student.txt,w);用‘w’打开的话若没有文件会创建一个文件;

if(f=NULL)//判断打开是否失败

printf(“打开失败”);//接下去就是写入,你可以使用二进制文件操作

******下面是资料*****

3.1 数据块存取函数

函数原型:

_CRTIMP size_t __cdecl fread(void *, size_t, size_t, FILE *);

_CRTIMP size_t __cdecl fwrite(const void *, size_t, size_t, FILE *);

当要求一次存取一组数据(如,一个数组、一个结构体变量的值),fread和fwrite函数可以解决该类问题。它们的调用形式一般为:

fread(buffer, size, count, fp);

fwrite(buffer, size, count, fp);

buffer:对于fread来说,指的是读入数据的存放地址;对于fwrite来说,是要输出数据的地址。

size:读写数据时,每笔数据的大小

count:读写数据的笔数

**********************

所以剩下的就是

fwrite(student_1, sizeof(student), 1, f);

当然,为了更好的存储数据,你完全可以把student设计成数组。够了吧,需要用到的资料百度百科或者个人博客上都有,我连关键字都留给你了。手打~

c++中如何向二进制文件读写含有string类型的结构体变量

代码样例:

#include stdio.h

#includestring

using namespace std;

struct student

{

string name;

string num;

string age;

};

void main()

{

    FILE *fp;

    char *buf, *p;

    int nfileSize;

    char terminator = 0;

    struct student src;

    struct student dst;

    src.name = “nihao”;

    src.num = “123456”;

    src.age = “18”;

    //写入文件

    fp = fopen(“data.txt”, “wb+”);

    fwrite(src.name.c_str(), 1, src.name.length(), fp);

    fwrite(terminator, 1, 1, fp);

    fwrite(src.num.c_str(), 1, src.num.length(), fp);

    fwrite(terminator, 1, 1, fp);

    fwrite(src.age.c_str(), 1, src.age.length(), fp);

    fwrite(terminator, 1, 1, fp);

    fclose(fp);

    //从文件中读取

    fp = fopen(“data.txt”, “rb”);

    fseek(fp, 0, SEEK_END);

    nfileSize = ftell(fp);

    fseek(fp, 0, SEEK_SET);

    buf = (char*)malloc(nfileSize);

    fread(buf, 1, nfileSize, fp);

    p = buf;

    dst.name = p;

    p = p + strlen(p) + 1;

    dst.num = p;

    p = p + strlen(p) + 1;

    dst.age = p;

    free(buf);

    fclose(fp);

    printf(“Name: %s\nNum: %s\nAge:%s\n”, dst.name.c_str(), dst.num.c_str(), dst.age.c_str());

}

执行结果:

原创文章,作者:INVQ,如若转载,请注明出处:https://www.506064.com/n/137875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
INVQINVQ
上一篇 2024-10-04 00:18
下一篇 2024-10-04 00:18

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python程序的三种基本控制结构

    控制结构是编程语言中非常重要的一部分,它们指导着程序如何在不同的情况下执行相应的指令。Python作为一种高级编程语言,也拥有三种基本的控制结构:顺序结构、选择结构和循环结构。 一…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28

发表回复

登录后才能评论