
正文
c语言文件追加函数 c语言以追加的方式打开文件
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在C语言的文件操作函数中,若在最后不关闭文件也可以完成追加、重写等操作,若不关闭会有什么后果?
后果如下:
文件打开后,可能有一些操作被缓冲在内存中,若不正常关闭,缓冲在内存中的数据就不能真正写入到文件中,可能造成数据丢失。
文件是系统中的一种资源,打开文件是对资源的占用,若不关闭,则别的程序就不能使用此资源。
比如你给文件追加写了一句话到文件中,但没有关闭,就可能那句话还存放在内存缓冲区中,还没有被真正的写入到文件。你打开文件也找不到刚刚写入的那句话
-物联网校企联盟技术部
相关问答
Q1: C语言里面文件fopen函数有个追加方式打开文件,什么是追加方式呢?
打开文件时以追加方式即可fopen(filename, "ab ")
内容拓展:
一、C语言
1、C语言是一门通用计算机编程语言,应用广泛。C语言c语言文件追加函数的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
2、尽管C语言提供c语言文件追加函数了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
3、二十世纪八十年代,为c语言文件追加函数了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定c语言文件追加函数了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
二、fopen函数
1、fopen函数是在当前目录下打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);
2、"文件指针名"必须是被说明为FILE 类型的指针变 量;
3、"文件名"是被打开文件的文件名;
4、"使用文件方式"是指文件的类型和操作要求;
5、"文件名"是字符串常量或字符数组。
Q2: C语言文件函数
//要另外说下如fprintf(stderr, "Can't open %s\n", file_app);这是向文件或者系统设备输出的函数;但他的文件指针为stderr;这是c中的标准错误输出设备指针,系统自动分配为显示器故相当于printf("Can't open %s\n", file_app);
#include stdio.h
#include stdlib.h
#include string.h
#define BUFSIZE 1024
#define SLEN 81
void append(FILE *source, FILE *dest);
int main(void)
{
FILE *fa, *fs; //定义2个文件类型指针
int files = 0; // 追加文件个数
char file_app[SLEN];
char file_src[SLEN]; // 2个字符串用来储存文件名;
puts("Enter name of destination file:");//输出Enter name of destination file:
gets(file_app);//输入要追加的文件名
if ((fa = fopen(file_app, "a")) == NULL)//fa指向追加的目的文件,以追加方式打开文件,如果打开失败退出;
{
fprintf(stderr, "Can't open %s\n", file_app);
exit(2);
}
if (setvbuf(fa, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败退出
{
fputs("Can't create output buffer\n", stderr);
exit(3);
}
puts("Enter name of first source file (empty line to quit):");//输出Enter name of first source file (empty line to quit):
while (gets(file_src) file_src[0] != '\0')//输入源文件如果是空串结束循环
{
if (strcmp(file_src, file_app) == 0)//如果源和追加文件相同
fputs("Can't append file to itself\n",stderr);
else if ((fs = fopen(file_src, "r")) == NULL)//如果打开源文件失败
fprintf(stderr, "Can't open %s\n", file_src);
else
{
if (setvbuf(fs, NULL, _IOFBF, BUFSIZE) != 0)//创建缓冲器与流相关,大小为BUFSIZE,作用是提高IO速度;如果打开失败开始下次循环
{
fputs("Can't create input buffer\n",stderr);
continue;
}
append(fs, fa);//函数
if (ferror(fs) != 0)//检查文件操作是否有错
fprintf(stderr,"Error in reading file %s.\n",
file_src);
if (ferror(fa) != 0)
fprintf(stderr,"Error in writing file %s.\n",
file_app);
fclose(fs);//关闭源文件
files++;//追加文件数+1
printf("File %s appended.\n", file_src);
puts("Next file (empty line to quit):");
}
}
printf("Done. %d files appended.\n", files);
fclose(fa);//关闭追加文件
return 0;
}
void append(FILE *source, FILE *dest)
{
size_t bytes;
static char temp[BUFSIZE];
while ((bytes = fread(temp,sizeof(char),BUFSIZE,source)) 0)//把源文件的内容追加到追加文件,块大小sizeof(char),块数为BUFSIZE
fwrite(temp, sizeof (char), bytes, dest);//写文件块大小sizeof(char),块数为BUFSIZE
}
Q3: C语言怎么把自定义头文件添加到函数库中
你可以把你的头文件复制到 stdio.h 所在的文件夹,并 修改 编译器自带的 stdio.h,
在 stdio.h 的 尾部 加一句 #include 你开发的头文件名 即可。以后,凡使用 stdio.h 就自动有了 你开发的头文件了。
这个操作很简单,但你要有管理员特权,才能修改stdio.h。
如果 可以自己 写 #include ...; 你可以 把自己开发的 头文件写在 自己 的 一个文件夹。把自己的文件夹路径 加入到 环境变量 INCLUDE 中。例如文件夹路径是 d:\my_head 用 命令:
set INCLUDE=%INCLUDE%;d:\my_head
就可加入。 使用头文件 用 #include my_some.h
my_some.h 是你开发的头文件之一,存放在 d:\my_head\ 下面。
Q4: C语言,如何在VC6.0上,添加自定义函数?
#include
#include
void
add(float
x,float
y)
//函数定义
{
printf("%5.2f\n",x+y);//计算a+b
}
main()
{float
a=0.0,b=0.0;
double
s;
scanf("%f,%f",a,b);//输入a
b
add(a,b);//直接调用函数
s=sqrt(a);
printf("跟号a=%f\n",s);
s=sqrt(b);
printf("跟号b=%f\n",s);
}
问题补充:
你的想法很好,可以的话去学下C++吧,能学到你所想的
你想调用函数的话,把这函数做成一个C文件,以后需要时就合并用吧
Q5: C语言文件打开函数
ANSI
C规定文件打开用函数fopen,关闭为fclose。
1、调用方式通常为:
代码如下:
FILE
*fp;
fp=fopen(文件名,
打开方式);
2、参数说明:
文件名:
形如"myfile.dat"、"F:\data\myfile.dat"等等;
打开方式:
"r"(只读)
为输入打开一个文本文件
"w"(只写)
为输出打开一个文本文件
"a"(追加)
向文件文件尾添加数据
"rb"(只读)
为输入打开一个二进制文件
"wb"(只写)
为输出打开一个二进制文件
"r+"(读写)
为读写打开一个文本文件
"w+"(读写)
为读写建立一个新的文本文件
"a+"(读写)
为读写打开一个文本文件
"rb+"(读写)
为读写打开一个二进制文件
"wb+"(读写)
为读写建立一个新的二进制文件
"ab+"(读写)
为读写打开一个二进制文件
3、注意:
(1)用"r"方式打开的文件,不能向其输入数据,并且该文件已存在,否则出错;
(2)用"w"方式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件;
(3)如果函数fopen打开文件出错,则fopen返回一个空指针值NULL;
(4)在程序开始运行时,系统自动打开3个标准文件:标准输入(stdin),标准输出(stdout),标准出错输
出(stderr)。如果要使用输入输出终端,则不需要打开,可以直接使用,如fputc(stdout,'a');向屏幕输出字符a。
c语言文件追加函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言以追加的方式打开文件、c语言文件追加函数的信息别忘了在本站进行查找喔。







