1.文件的打开和关闭
fopen有2个参数,第一个是文件的名字,第二个是打开的模式(例如是读文件还是写文件)
(1)该文件夹下面没有data.txt文件,但是我执行了read操作,所以会显示这样的错误
(2)如果是写的话,就会创建一个新的文件,不会报错
(3)每一个被使用的文件都在内存里面开辟了文件信息区,用来保存相关的信息,这些信息放在
结构体里面,一般通过FILE指针维护这个变量,简称文件指针;
(4)关闭文件fclose(pf),它的参数就是我们命名的文件指针
(5)我们使用printf,scanf这些函数的时候,当程序开始运行,就会默认的打开3个流--标准输入流
stdin---标准输出流stdout---标准错误流stderr,所以我们可以直接的输入输出,但是对于文件的话,
肯定不能说是默认打开某个文件,所以我们需要人为地进行打开和关闭的操作;
2.文件的读写
------fputc/fgetc
(1)顺序读写:就是把上面的’a''b''c'字符打印到文件里面,放到文件里面
我们也可以使用循环打印字符到相应的文件里面,放到控制台里面
stdout直接打印到屏幕上面
---------------------------------
读文件:fopen的第二个参数修改成r
(1)输出原来的文件里面的内容(把文件内容显示出来)
(2)从键盘上面写,然后输出内容,使用stdin(把输入的内容显示出来)
---------------------------------------------------------------------------------------------------------------------------------
------fputs/fgets
(1)写入一行数据,
(2)读出一行数据
这个里面有3个参数,多了第二个参数,就是读取的个数,最后会打印num-1个字符,我们写的是
10,最后输出了9个文件里面的字符;
一行8个字符,你想让他读取10个,他最多会读取8个,因为遇到斜杠n就会提前结束;
---------------------------------------------------------------------------------------------------------------------------------
------fprintf/fscanf
fprintf和printf的不同就是前面多了个参数,也就是我们定义的文件指针
fscanf也是前面加上一个文件指针
这个里面的输出也可以使用fprintf(stdout,"%d %f",sa,s.b);
---------------------------------------------------------------------------------------------------------------------------------
------scanf/sprintf
sprintf
就是把所有的内容放到arr数组里面,然后进行打印;
sscanf就是把s里面的东西放到temp这个结构体变量里面,最后printf打印输出
------辨析总结
---------------------------------------------------------------------------------------------------------------------------------
------fwrite/fread
以二进制的方式进行读写
写进去的是二进制文件,所以我们看不懂
八度进去的东西写出来,果然读取进去了,fread的返回值是实际读取的个数,可能比我们想要读取的数字小。