网站首页 > 文章中心 > 其它

c语言函数实现文件

作者:小编 更新时间:2023-09-21 10:34:57 浏览量:149人看过

C语言函数编写:文件复制

C语言实现一个简单的文件复制功能,Linux环境下.

思路步骤:(下代码最重要的逻辑步骤清晰)

第一步:打开源文件(要复制的文件),打开文件的方式以读的方式就可以了.

c语言函数实现文件-图1

Linux C打开文件的库函数有:int open(const char *pathname,int flags),int open(const char *pathname,mode_t mode),以及 FILE *fopen(const char *path,const char *mode),FILE *fdopen(int fd,const char *mode),这几个函数,具体的使用方法就查看manual就可以了.

第二步:创建目标文件,所用的函数也是上面那几个.

第三步:读取文件.库函数有:size_t read(int fd,void *buf,size_t count),

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)

第三步:写入目标文件.用的库函数:size_t write(int fd,void *buf,size_t count),

size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream)

第四步:关闭文件.库函数:int fclose(FILE *fp) ,int close(int fd)

c语言函数实现文件-图2

思路步骤就是这样子的了.下面是具体的代码实现.

#include

int main(int argc,char *argv[])

{

int fd_source_file,fd_copy_file;//用接受int open()函数返回的值

//FILE *fp_source_file,*fp_copy_file;//如果用FILE *fopen()函数的话

int size_read,size_write;

//检查参数的输入

printf("usage: ./a.out source_file_path copy_file_path\n");

exit(1);

}

//复制目标文件名

//打开源文件

perror("open source file error");

//创建目标文件

if( (fd_copy_file=open(argv[1],O_CREAT|O_RDWR)) 0 )

perror("create copy file error");

do

//读取文件内容

perror("read source file error");

//写入目标文件

if( (size_write=write(fd_copy_file,buf,sieze_read))0 )

perror("wrire file error");

return 0;

用C语言实现文件读写操作(4)

用C语言实现文件读写操作

第二段:直接I/O文件操作

这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个 FILE指针来进行,而此类文件操作是围绕一个文件的"句柄"来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号.此类文件操作常用的函数如下表,这些函数及其所用的一些符号在io.h和fcntl.h中定义,在使用时要加入相应的头文件.

函数 说明

open() 打开一个文件并返回它的句柄

close() 关闭一个句柄

lseek() 定位到文件的指定位置

read() 块读文件

write() 块写文件

eof() 测试文件是否结束

filelength() 取得文件长度

rename() 重命名文件

chsize() 改变文件长度

下面就对这些函数一一说明:

①open()

打开一个文件并返回它的句柄,如果失败,将返回一个小于0的值,原型是int open(const char *path, int access [, unsigned mode]); 参数path是要打开的文件名,access是打开的模式,mode是可选项.表示文件的属性,主要用于UNIX系统中,在DOS/WINDOWS这个参数没有意义.其中文件的打开模式如下表.

符号 含义 符号 含义 符号 含义

O_RDONLY 只读方式 O_WRONLY 只写方式 O_RDWR 读/写方式

O_NDELAY 用于UNIX系统 O_APPEND 追加方式 O_CREAT 如果文件不存在就创建

O_TRUNC 把文件长度截为0 O_EXCL 和O_CREAT连用,如果文件存在返回错误 O_BINARY 二进制方式

O_TEXT 文本方式

对于多个要求,可以用"|"运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件.

例:int handle=open("c:\\msdos.sys",O_BINARY|O_CREAT|O_WRITE)

关闭一个句柄,原型是int close(int handle);如果成功返回0

例:close(handle)

定位到指定的位置,原型是:long lseek(int handle, long offset, int fromwhere);参数offset是移动的量,fromwhere是移动的基准位置,取值和前面讲的fseek()一样,SEEK_SET:文件首部;SEEK_CUR:文件当前位置;SEEK_END:文件尾.此函数返回执行后文件新的存取位置.

例:

x=lseek(hnd1,0L,SEEK_END);//把存取位置移动到文件尾,x=文件尾的位置即文件长度

从文件读取一块,原型是int read(int handle, void *buf, unsigned len);参数buf保存读出的数据,len是读取的字节.函数返回实际读出的字节.

写一块数据到文件中,原型是int write(int handle, void *buf, unsigned len);参数的含义同read(),返回实际写入的字节.

例:char x[]="I Love You";write(handle,x,strlen(x));

类似feof(),测试文件是否结束,是返回1,否则返回0;原型是:int eof(int handle);

例:while(!eof(handle1)){......};

返回文件长度,原型是long filelength(int handle);相当于lseek(handle,0L,SEEK_END)

例:long x=filelength(handle);

重命名文件,原型是int rename(const char *oldname, const char *newname); 参数oldname是旧文件名,newname是新文件名.成功返回0

①.0.chsize();

改变文件长度,原型是int chsize(int handle, long size);参数size表示文件新的长度,成功返回0,否则返回-1,如果指定的长度小于文件长度,则文件被截短;如果指定的长度大于文件长度,则在文件后面补''\0''.

;

用C语言的函数创建、打开和读写文件

#include?stdio.h

void?main(int?argc,char?*argv[])?//命令行参数

int?ch;//定义文件类型指针

FILE?*fp;//判断命令行是否正确

return;?//键入了错误的命令行,结束程序的执行

//按读方式打开由argv[1]指出的文件

if((fp=fopen(argv[1],"r"))==NULL)

printf("The?file?%s?can?not?be?opened.\n",argv[1]);//打开操作不成功

return;//结束程序的执行

//成功打开了argv[1]所指文件

ch=fgetc(fp);?//从fp所指文件的当前指针位置读取一个字符

while(ch!=EOF)?//判断刚读取的字符是否是文件结束符

putchar(ch);?//若不是结束符,将它输出到屏幕上显示

ch=fgetc(fp);?//继续从fp所指文件中读取下一个字符

}?//完成将fp所指文件的内容输出到屏幕上显示

fclose(fp);?//关闭fp所指文件

如何用C语言fopen函数实现这样的文件打开功能?

部分方法:

fopen的函数原型:FILE * fopen(const char * path,const char * mode);

fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:

r 以只读方式打开文件,该文件必须存在.

r+ 以可读写方式打开文件,该文件必须存在.

rb+ 读写打开一个二进制文件,允许读数据.

rw+ 读写打开一个文本文件,允许读和写.

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件.

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件.

a 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留.(EOF符保留)

a+ 以附加方式打开可读写的文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留. (原来的EOF符不保留)

wb 只写打开或新建一个二进制文件;只允许写数据.

wb+ 读写打开或建立一个二进制文件,允许读和写.

wt+ 读写打开或着建立一个文本文件;允许读写.

at+ 读写打开一个文本文件,允许读或在文本末追加数据.

ab+ 读写打开一个二进制文件,允许读或在文件末追加数据.

上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件.

C语言的文件处理的过程是,先声明一个文件指针,然后用fopen函数打开文件,fopen打开文件成功的话返回一个指针该流的文件指针,然后利用指针对文件进行操作就好了,最后完事了在fclose函数关闭流,并释放指向他的指针.

例如:要对c:\example.txt的文本文件内容为:ISP,进行操作

#include stdio.h

int main()

char ch;

FILE* fp;

fp = fopen(fname,"r"); //只供读取

if(fp == NULL) //如果失败了

printf("ERROR!");

return 1;

//getc()用于在打开文件中获取一个字符

while((ch = getc(fp)) != EOF) //循环获取直至文件结束 EOF标志(End Of File)

putchar(ch); //打印获取到的字符

fclose(fp); //关闭文件

希望对你有帮助!

C语言怎样对文件进行操作

我们运用C语言编写程序的时候,经常需要对文件进行操作.那么该如何实现呢?下面我给大家分享一下.

工具/材料

Sunlime Text

打开Sublime Text软件,新建一个C语言文件,然后导入C语言库,如下图所示

此时此刻呢新建C语言的main函数,对文件的操作都会在main函数中进行,如下图所示

此时此刻呢调用C语言的fopen函数对文件进行打开操作,如下图所示

当打开文件以后就可以通过fgetc函数读取文件里面的内容,如下图所示

以上就是土嘎嘎小编为大家整理的c语言函数实现文件相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章