文件IO编程十
来源:互联网 发布:mac强制关掉进程 编辑:程序博客网 时间:2024/05/22 17:22
(1) fgets 详解
函数:char *fgets(char *s, int size, FILE *stream);
说明:fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符,读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 若成功则返回s指针,返回NULL则失败。
(2) fputs详解
函数:int fputs(const char *s, FILE *stream);
说明:fputs()用来将参数s所指的字符串写入到参数stream所指的文件中,成功则返回写出的字符个数,失败则返回EOF。
都是行缓冲,都是对文本文件操作。
程序:每次都读99个字节,会自动加上\0
char buf[10];
while(1)
{
bzero(buf, 100);
if(fgets(buf, 100, fp_src) == NULL)
{
if(feof(fp_src))
break;
if(ferror(fp_src))
{
perror("fgets() failed");
break;
}
}
fputs(buf, fp_dst);
}
上面介绍的是行缓冲,下面介绍的是块缓冲。而且下面的称为直接IO函数,二进制IO函数。
(3) fread/fwrite 详解
函数:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
说明:参数stream为已经打开的文件指针,参数ptr为欲存放读取进来的数据空间,读取的字符以参数size*nmemb来决定。fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb来的小。则代表可能读到了文件尾或者失败,这时必须用feof()或者ferror()来判断。
函数:size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream);
说明:会返回实际写入的nmemb数目
假如有99个字符,size是20,nmemb是5,那么将返回4。此时比nmemb小1,就要进行判断
、
(3) ftell
函数:long ftell(FILE *stream);
说明:ftell()用来取得文件流目前的读写位置,参数stream为已打开的文件指针。当调用成功则会返回目前的读写位置。若有错误则返回1,errno会存放错误代码。
程序:
char buf[20*5];
int nread;
long begin, end;
while(1)
{
bzero(buf, 20*5);
begin = ftell(fp_src);
int nread = fread(buf, 20, 5, fp_src);
if(nread < 5)
{
if(feof(fp_src))
{
end = ftell(fp_src);
fwrite(buf, end-begin, 1,fp_src);
break;
}
if(ferror(fp_src))
{
perror("fread() failed");
exit(1);
}
fwrite(buf, 20, 5,fp_src);
}
}
- 文件IO编程十
- 文件IO操作编程
- Linux文件IO编程
- 文件IO编程
- 文件IO编程一
- 文件IO编程二
- 文件IO编程三
- 文件IO编程四
- 文件IO编程五
- 文件IO编程六
- 文件IO编程七
- 文件IO编程八
- 文件IO编程九
- 文件IO编程十一
- 文件IO编程十二
- Linux文件---文件IO编程
- 【网络编程】之十、重叠IO Overlapped IO
- 【网络编程】之十、重叠IO Overlapped IO
- JAVA基础知识部分笔记
- Java高效读取大文件
- 时间监视器 StopWatch
- 关于AES加解密
- 在linux中安装JDK和tomcat(一):在虚拟机上安装linux
- 文件IO编程十
- SPlay 伸展树
- 部分函数总结
- org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
- C++抽象编程——算法分析(1)——选择排序
- 关于Java异常10件事儿<下>20170511
- Git冲突:commit your changes or stash them before you can merge.
- Java 9 中的 9 个新特性
- Java的堆和栈的内存分布