c语言文件读写“追加”

c语言文件读写“追加”,第1张

通过一个简单的示例进行讲解(此示例用文本文件进行演示):

#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实现不了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12050838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存