C语言理论篇——熟练文件操作与如何计算结构体所占用的内存

2019.12.15

文件操作

1.创建文件: FILE *fp=fopen("C:\\Users\\1\\Desktop\\test.txt","a+");
fopen("路径","写入读取方式")路径即地址所以用指针变量来接收
常用的语法:
"r+"读写文件(打开一个文件),"w+"读写文件(新建一个文件),"a+"读写文件(打开一个文件)在文本末尾追写
fputc('字符',文件指针)放入一个字符
fgetc(文件指针)读取一个字符
fputs("字符串",文件指针)放入串字符
fgets(字符数组,n,文件指针)从文件读取n-1个字符并存到字符数组中,因为字符数组以'\0'结尾,所以只读n-1个,一行一行的读取
fseek(文件指针,位移量,起始点)
位移量:以起始点为标准
起始点:SEEK_SET表示文件开始位置,SEEK_CUR表示当前位置,SEEK_END表示文件末尾
fwrite(数组名,写入数据长度,写入次数,文件指针),该函数是将数组中的元素以二进制的方式写入文本
fread(数组名,存入数据长度,存入次数,文件指针),该函数是将文件中的二进制转换后存入数组中

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *p=fopen("C:\\Users\\1\\Desktop\\test2.txt","a+");
    int num1[]={1,2,3,4,5};
    fwrite(num1,sizeof(num1),1,p);
    return 0;
}
文件操作1.png

写入效果


文件操作2.png

读取效果

结构体

struct 类名{数据类型};
其实类名就类似于int,char而对象类似于变量名

一个类所占据的字节空间不是简单的将内部所有数据类型的字节空间相加,而是先对齐后,再相加
对齐规则:
1.占据内存小的向大的对齐,比如char->int,int->*p,对齐之后char占4个字节,int占8个字节,然后将对齐后的所有字节数相加,最终的结果才是这个类所占用的字节数
2.多个小的数据类型空间可以合成变成一个大的类型空间,比如i个char(1<=i<=4)一起对齐为一个int(4个字节)型空间,同理i个char和一个int可以转换为*p(8个字节)的空间,两个int转换为一个*p

字节转换.png
show.png

3.结构体的总字节数等于内部最大的数据类型所占字节的整数倍

定义对象:类名 对象名;
     类名 对象名指针;
非结构体指针变量使用.来访问成员变量
结构体指针变量使用->来访问成员变量

#include
struct person{
    int age;
};
int main(){
    person xiaowang;
    person *xiaoming=&xiaowang;
    xiaowang.age=10;
    printf("%d",xiaoming->age);
    return 0;
}

结果.png

结构体内声明变量时不能被赋值,只能通过对象的调用来赋值

你可能感兴趣的:(C语言理论篇——熟练文件操作与如何计算结构体所占用的内存)