C语言怎样对文件进行操作
我们运用C语言编写程序的时候,经常需要对文件进行操作。那么该如何实现呢?下面我给大家分享一下。
工具/材料
Sunlime Text
01
打开Sublime Text软件,新建一个C语言文件,然后导入C语言库,如下图所示
02
接下来新建C语言的main函数,对文件的操作都会在main函数中进行,如下图所示
03
接下来调用C语言的fopen函数对文件进行打开操作,如下图所示
04
当打开文件以后就可以通过fgetc函数读取文件里面的内容,如下图所示
c语言库函数的打开文件函数
c语言标准库中用于打开文件的函数是fopen()。
函数原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
参数说明:path指明要打开的文件名,mode指明以什么方式打开。详细在下面介绍。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno
中。示例如下
#includestdio.h
//根据需要修改成自己要打开的文件即可。
#define F_PATH “d:\\myfile\\file.dat”
int main(void)
{
FILE *fp=NULL;//需要注意
fp=fopen(F_PATH,”r”); //以只读方式打开一个文件
if(NULL==fp)
{
return -1;//要返回错误代码
}
fclose(fp); //打开一个文件停止操作后,要关闭打开的文件
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
参数mode的类型:
r
以只读方式打开文件,该文件必须存在。
r+
以可读写方式打开文件,该文件必须存在。
rb+
读写打开一个二进制文件,允许读写数据,文件必须存在。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
如何利用c语言打开文本文件?
C程序语言非常强大,通过打开文本的函数(里面的参数指出要打开文本的位置及文件名),即可打开相应的文本。
第一,包含的头文件:
#include stdio.h,这是一个输入输出函数,
第二,打开文本文件:
FILE *file = fopen(“c:\\1.txt”,”r”);代表C盘的文件,文件名为1.txt,r表示以只读的方式打开,
第二个参数表示打开方式,
“a” 表示追加方式打开,
“r” 表示以读方式打开,
“w” 表示以写方式打开,
第三,读入文本文件中的数据:
方法:
char s[10] = “”;
while (!feof(file))
fread(s,1,1,file);
通过fread函数对打开的文件进行读和写操作,也就是这样来改变文件的内容。
c语言关闭非活动文件后怎样打开
打开方式说明
r以只读方式打开文件,只允许读取,不允许写入。该文件必须存在。
r+以读/写方式打开文件,允许读取和写入。该文件必须存在。
rb+以读/写方式打开一个二进制文件,允许读/写数据。
rt+以读/写方式打开一个文本文件,允许读和写。
w以只写方式打开文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件。
w+以读/写方式打开文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF符保留)。
a+以追加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的EOF符 不保留)。
wb以只写方式打开或新建一个二进制文件,只允许写数据。
wb+以读/写方式打开或建立一个二进制文件,允许读和写。
wt+以读/写方式打开或建立一个文本文件,允许读写。
at+以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
如何用C语言打开一个文件?
近用c语言做文件操作比较频繁,记几个常用的操作
获得文件大小:
fseek(fp, 0, SEEK_END);
int fileSize = ftell(fp);
rewind(fp);
读取指定位置的数据块:
fseek( fp,offset,SEEK_SET );
int num_read = fread(buf, 1, length, fp);
删除文件
int res = access( filename,0 ); // 判断文件是否存在
if ( res == 0 )
{
res = remove( filename );// 删除文件
return ( res ==0 );
}
在指定位置写入块数据:
fseek( fp, offset, SEEK_SET );
num_write = fwrite( buf, 1, n, fp );
打开文件方式中有一个比较特别的,如果 某文件中已经有了一部分数据,你需要继续在上面添加数据,但是是在指定位置添加,也就是说,仍然需要通过 fseek 找到写入位置,然后再 fwrite,这时候需要以 “rb+” 方式打开。而不能以”a”或者”ab+”方式。以”a”方式打开,fseek函数不起作用。
获得文件属性
struct stat st;
FILE *fp = fopen( filename.c_str(),”rb” );
if ( !fp )
{ // error
}
fstat( fp-_file, st );
遍历目录
std::string dirspec = dir + “\\*.*”;
struct _finddata_t filefind;
int done = 0;
intptr_t handle = 0;
if( ( handle = _findfirst(dirspec.c_str(),filefind) ) == -1 )
return IVS_FAIL;
IVS_RESULT res = IVS_OK, response =IVS_OK;
while( !(done=_findnext(handle,filefind)) )
{
if( !strcmp(filefind.name,”..”) || !strcmp(filefind.name,”.”) )
continue;
AdsFileInfo info;
if((_A_SUBDIR==filefind.attrib))
{
info._filename = filefind.name;
info._fileSize = filefind.size;
info._atime = filefind.time_access;
info._ctime = filefind.time_create;
info._mtime = filefind.time_write;
info._isdir = true;
}
else
{
std::string tmpFilename = dir + “\\”;
tmpFilename += filefind.name;
res = getFileInfo( tmpFilename, info );
response = (!SUCCESS(res))?res: response;
}
list.push_back( info );
}
_findclose(handle);
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。