C语言中对文件的操作

在C语言中对文件的操作是通过FILE结构体来完成的。

读文件:

1、读取文件:fread()

2、memset():用指定的字符来设置一块BUFFER.可避免字符串找不到结尾,也可避免增加不必要的字符串长度

3、得到文件的长度:ftell(),它是得到文件指针当前的位置,因为文件指针随文件移动,所以指针当前位置就是文件的长度。

4、rewind()重新放文件指针到文件开始处。

5、移动文件指针fseek(),

示例:

FILE *oFile=fopen("text.txt","w");

char *strBuf;

seek(strBuf,0,SEEK_END);

int len = ftell(oFile);

strBuf = new char[len+1]

rewind(oFile);

fread(strBuf,0,len,oFile);

strBuf[len]=0

MessageBox(strBuf)

fclose(oFile);



写文件:

1、定义FILE结构体的指针;

2、得到FILE结构体的指针:FILE *fopen()

3、写文件 fwrite()

4、关闭文件fclose()

5、刷新缓存区fflush()

6、移动文件指针fseek()

示例:

FILE *oFile=fopen("text.txt","w");
fwrite("text",1,strlen("text"),oFile);
fclose(oFile);
// fseek(oFile,0,SEEK_SET);
// fwrite("234354text",1,strlen("234354text"),oFile);
// fflush(oFile);


写文件时经常会遇到的问题:

知识点:

1、在C语言中,从磁盘向内存读数据,它是先从磁盘文件中将一批数据输入到内存的缓冲区当中,充满整个缓冲区,当我们调用读取函数的时候,从缓冲区中逐步将数据送到程序数据区当中。

2、特殊应用:比如服务器端有软件监控了很多设备,这些设备不断的把日志信息发送给服务器,服务器接收到这些日志信息后需要将这些信息写入到磁盘文件当中。这时如果我们使用了C语言的带缓冲的文件系统可能会出现一些问题,比如服务器断电了,宕机了等,这时会导致一些信息没有写到服务器,这时就使用fflush()来解决;3

3、对于多次调用写入函数,程序如何知道写在什么位置呢:对于C语言的文件操作来说,它有一个文件指针,这个文件指针始终指在上一个写完的的数据的位置处。它会根据文件的操作实时的移到指针的位置,

如果想到回到文件的开头继续写入,就需要将指针移动到文件的开头。


4、在字符串长度后多写一个字节,多写的那个字节为空,在C语言中空即0,正好可以作为字符串的结尾。但它有一个缺点就是它会增加文件的长度,可以使用memset函数来避免这个问题。


5、对于字符来说和整数是可以互操作的,如果给它赋一个整数值,实际上是给它一个ASCII码,赋给它字符也是ASCII码,10是换行,当我们用文本方式去读和用二进制方式去读时,是有明显区别的。


6、二进制文件和文本文件:文件-在计算机中以二进制表示的数据在外部存储介质上的另一种存放形式(数据的另一种存放形式);

二进制文件:可执行程序、图形、图象、声音等文件

文本文件:ASCII文件,文字文件

二者都是内存中的ASCII数据。都可以以二进制试打开。

当按照方便方式往文件中写入数据时,遇到换行字符,则会转换为回车、换行,在读取文件时,遇到回车、换行的组合,则会转换为换行字符

当按照二时行方式往文件中写入数据,则将数据在内存中的存储形式原样输出到文件中。


猜你喜欢

转载自blog.csdn.net/dyz_123456/article/details/71079817