通过一个简单的示例进行讲解(此示例用文本文件进行演示):
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define FILE_NAME "demo.txt" // 文件名称
int main()
{
FILE* fp = NULL// 文件指针
char* szAppendStr = "Text"
errno_t eResult
// 以附加方式打开可读/写的文件, 如果没有此文件则会进行创建,然后以附加方式打开可读/写的文件
eResult = fopen_s(&fp, FILE_NAME, "a+")
// 打开文件失败
if (eResult != 0)
exit(-1)
// 将追加内容写入文件指针当前的位置
fputs(szAppendStr, fp)
// 最后不要忘了,关闭打开的文件~~~
fclose(fp)
return 0
}
扩展资料
文件的打开和关闭
open()函数的作用是打开文件,其调用格式为: int open(char *filename, int access)该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接。修饰符可以有多个, 但基本模式只能有一个。
open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle)该函数关闭文件描述字handle相连的文件。
先以追加的方式用fopen函数打开文件,如:fp=fopen("filename","a");然后用格式化读写函数在文件末尾写一行,如:fprintf("stdin,"%s\n",fp)。其中stdin是标准输入文件(指键盘),%s是格式控制符(这里是字符输入),fp是刚才打开的那个文件的指针。写完文件后,记得关闭文件,用fclose(fp)。
明确告诉你,是不可能的。即便系统内置实现了该功能,理想状态下也是你每写入一个字节,后面的全部顺序移动一个字节,这样也是很耗时的。另一种思路,每次写入都是allocate新的空间,新内容末尾执行旧内容开头,但是文件空间的分配及记录是由文件系统(即 *** 作系统)控制的,文件系统自身维护了文件信息表,其中包含了文件分为哪些段存在哪里,实际情况更加复杂。所以文件链式存储不受应用层(jvm)控制。所以java实现不了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)