关于文件的操作

简介: 关于文件的操作

1.文件操作

FILE* fp = fopen("config.txt", "r");
    if (!fp)
    {
        printf("文件打开失败\n");
    }
    else
    {
        char LineBuf[1024];
        while (!feof(fp))
        {
            LineBuf[0] = 0;
            if (fgets(LineBuf, sizeof(LineBuf) - 1, fp) == NULL)
            {
                continue;
            }if (LineBuf[0] == '\0')
            {
                continue;
            }
        lblprocstring:
            if (strlen(LineBuf) > 0)
            {
                if (LineBuf[strlen(LineBuf) - 1] == 10 || LineBuf[strlen(LineBuf) - 1] == 13) {
                    LineBuf[strlen(LineBuf) - 1] = 0;
                    goto lblprocstring;
                }
            }
            if (strlen(LineBuf) <= 0)
            {
                continue;
            }
            printf("%s\n", LineBuf);
        }
        fclose(fp);
    }

2.保存到文件中的结构体,字节对齐

对于要保存到文件中的结构体,结构体成员中不要出现指针类型成员变量,因为它所指向的内存地址很可能失效,一旦引用了失效的地址会导致程序运行崩溃

struct stu {
    char name[30];
    int age;
    double score;
};

字节对齐这个问题和编译器有关,像这个结构体,有30+4+8=42个字节,但是在window上用VS的话你看他长度的话是48字节,因为window自动搞成8的整数倍,linux用gcc则是4的整数倍,你再linux上看他是44字节

如果把 这个结构体写入一个文件中,那在window生成后是48字节,再去linux打开时读出来是44字节,显然读出来的数据肯定出错,解决的办法是,定义结构体之前就用”#pragma pack(1)”设置结构体对齐方式是1字节对齐,按1字节对齐的意思就是告诉编译器不要去对齐,实际是多少字节就是多少字节,如果想要恢复默认的字节对齐方式,在定义结构体之后,可以使用”#pragma pack()”取消刚才的设置的对齐,这样不管是什么操作系统,读这个结构体都是42字节

修改后就是这样子

#pragma pack(1)
struct stu {
    char name[30];
    int age;
    double score;
};
#pragma pack()
相关文章
|
6月前
|
存储 5G C语言
JavaFile实现对文件txt内容的增删该查操作
JavaFile实现对文件txt内容的增删该查操作
52 0
|
5月前
|
Linux
仅同步最近5分钟的文件如何操作
【6月更文挑战第28天】仅同步最近5分钟的文件如何操作
23 0
|
6月前
如何批量复制多个文件到多个目录中(批量复制文件,多对多文件高效操作的方法)
该文介绍了如何使用一个工具进行文件批量复制的操作。首先,提供了百度网盘和蓝奏云的链接,附有提取码,以获取所需工具。接着,展示了一个包含三个文件夹和两张图片的示例。操作步骤包括:打开工具,使用Ctrl+5进入批量复制模块,选择图片并拖拽至复制区域,然后选择目标文件夹(在这里是三个命名的空文件夹),点击“开始复制”,等待过程完成。工具提供复制选项供用户按需选择,且支持保存操作路径以备后续使用。完成后,目标文件夹将包含复制的图片,整个过程简便快捷。
|
存储 iOS开发 C++
C++文件 I/O操作
C++文件 I/O操作
59 0
|
C语言
对文件的各种操作详解 3
对文件的各种操作详解
|
C语言 C++
对文件的各种操作详解 1
对文件的各种操作详解
目录的操作
目录的操作
101 0
|
开发者 Python Windows
文件的读取方式 | 学习笔记
快速学习 文件的读取方式
文件的读取方式 | 学习笔记
|
开发者 Python
文件的其他操作|学习笔记
快速学习 文件的其他操作
103 0