C语言之文件编程标志I/O库(2)
2017-08-10 19:53
302 查看
标志I/O库:C标准库提供了操作文件的标准I/O函数库,与系统调用相比,主要差别是实现了一个跨平台的用户态缓冲的解决方案。简单来说就是标准I/O的移植性更好。
(1) 函数fopen():
#include <stdio.h> // 头文件
FILE *fopen(const char *path, const char *mode); //函数原型
fopen打开由path指定的文件,并把它与一个文件流关联起来。mode参数指定文件的打开方式。
fopen执行成功返回一个非空的FILE*指针,失败时返回NULL。
例:
#include <stdio.h>
int main()
{
FILE *fd = fopen("text", "wb+");
if(fd == NULL)
{
printf("文件打开失败\n");
perror("open");
}
printf("打开成功\n");
return 0;
}
(2) 函数fread();
fread()用于从一个文件流里读取数据。
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_tnmemb, FILE *stream); //函数原型
数据从文件流stream读到ptr指向的数据缓冲区里。size参数指定每个数据记录的长度,nmemb给出要传输的记录的个数。函数的返回值是成功读到数据缓冲区里的记录的个数(不是字节数)。
(3) 函数fwrite();
fwrite()从指定的数据缓冲区里取出数据记录,并把它们写到输出流中。它的返回值是成功写入的记录个数。函数原型如下:
#include <stdio.h>
size_t fwrite(const void *ptr, size_t size,size_t nmemb,FILE *stream); //函数原型
例:
#include <stdio.h>
#define SIZE 1024
int main()
{
FILE * fp1 = fopen("1.ppt.pptx","ab+");
if(fp1 == NULL)
{
printf("文件打开失败\n");
return -1;
}
FILE * fp2 = fopen("1.ppt.pptx","ab+");
if(fp1 == NULL)
{
printf("文件打开失败\n");
return -1;
}
int ret = 0;
char buf[SIZE] = {0};
while(ret = fread(buf, sizeof(char), SIZE, fp1))
{
fwrite(buf, sizeof(char), ret, fp2);
}
if(ret == 0 && !feof(fp1))
{
return -1;
}
printf("文件复制成功\n");
return 0;
}
这个程序的功能是复制一个文件。主要思想就是从一个文件里读取1024个字符,然后写入到一个新的文件里,然后再读再写直到第一个文件读完。
(4) 函数fclose()
fclose()函数用于关闭指定的文件流。
#include <stdio.h>
int fclose(FILE *fp); //函数原型
(5) 函数fflush()
fflush()用于把文件流里所有未写出的数据立即写出。
#include <stdio.h>
int fflush(FILE *stream);
使用这个函数可以确保在程序继续执行之前重要的数据都已经被写到磁盘上。
调用fclose函数隐含执行了一次fflush操作,所以不必在调用fclose之前调用fflush。
(6) 函数fseek()
fseek()用于在文件流里为下一次读写操作指定位置。
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
offset和whence参数的含义和取值与lseek函数完全一样,但lseek返回的是一个off_t数值,而fseek返回的是一个整数:0表示成功,-1表示失败并设置errno指出错误。
(7) 函数fgetc();
fgetc()从文件流里取出下一个字节并把它作为一个字符返回。当它到达文件结尾或出现错误时,返回EOF。getc()和fgetc()一样,但它有可能被实现为一个宏。getchar()相当于getc(stdin)。
#include <stdio.h>
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar(void);
(8) 函数fputc()
fputc()把一个字符写到一个输出文件流中,它返回写入的值,如果失败,则返回EOF。类似fgetc()和getc(),putc()的作用也相当于fputc(),但它可能被实现为一个宏。putchar()相当于putc(c, stdout),它把单个字符写到标准输出。
#include<stdio.h>
int fputc(intc, FILE *stream);
int putc(intc, FILE *stream);
int putchar(intc);
注意:putchar和getchar都是把字符当作int类型而不是char类型来使用的,这就允许文件结尾EOF取值为-1。
(1) 函数fopen():
#include <stdio.h> // 头文件
FILE *fopen(const char *path, const char *mode); //函数原型
fopen打开由path指定的文件,并把它与一个文件流关联起来。mode参数指定文件的打开方式。
fopen执行成功返回一个非空的FILE*指针,失败时返回NULL。
例:
#include <stdio.h>
int main()
{
FILE *fd = fopen("text", "wb+");
if(fd == NULL)
{
printf("文件打开失败\n");
perror("open");
}
printf("打开成功\n");
return 0;
}
(2) 函数fread();
fread()用于从一个文件流里读取数据。
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_tnmemb, FILE *stream); //函数原型
数据从文件流stream读到ptr指向的数据缓冲区里。size参数指定每个数据记录的长度,nmemb给出要传输的记录的个数。函数的返回值是成功读到数据缓冲区里的记录的个数(不是字节数)。
(3) 函数fwrite();
fwrite()从指定的数据缓冲区里取出数据记录,并把它们写到输出流中。它的返回值是成功写入的记录个数。函数原型如下:
#include <stdio.h>
size_t fwrite(const void *ptr, size_t size,size_t nmemb,FILE *stream); //函数原型
例:
#include <stdio.h>
#define SIZE 1024
int main()
{
FILE * fp1 = fopen("1.ppt.pptx","ab+");
if(fp1 == NULL)
{
printf("文件打开失败\n");
return -1;
}
FILE * fp2 = fopen("1.ppt.pptx","ab+");
if(fp1 == NULL)
{
printf("文件打开失败\n");
return -1;
}
int ret = 0;
char buf[SIZE] = {0};
while(ret = fread(buf, sizeof(char), SIZE, fp1))
{
fwrite(buf, sizeof(char), ret, fp2);
}
if(ret == 0 && !feof(fp1))
{
return -1;
}
printf("文件复制成功\n");
return 0;
}
这个程序的功能是复制一个文件。主要思想就是从一个文件里读取1024个字符,然后写入到一个新的文件里,然后再读再写直到第一个文件读完。
(4) 函数fclose()
fclose()函数用于关闭指定的文件流。
#include <stdio.h>
int fclose(FILE *fp); //函数原型
(5) 函数fflush()
fflush()用于把文件流里所有未写出的数据立即写出。
#include <stdio.h>
int fflush(FILE *stream);
使用这个函数可以确保在程序继续执行之前重要的数据都已经被写到磁盘上。
调用fclose函数隐含执行了一次fflush操作,所以不必在调用fclose之前调用fflush。
(6) 函数fseek()
fseek()用于在文件流里为下一次读写操作指定位置。
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
offset和whence参数的含义和取值与lseek函数完全一样,但lseek返回的是一个off_t数值,而fseek返回的是一个整数:0表示成功,-1表示失败并设置errno指出错误。
(7) 函数fgetc();
fgetc()从文件流里取出下一个字节并把它作为一个字符返回。当它到达文件结尾或出现错误时,返回EOF。getc()和fgetc()一样,但它有可能被实现为一个宏。getchar()相当于getc(stdin)。
#include <stdio.h>
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar(void);
(8) 函数fputc()
fputc()把一个字符写到一个输出文件流中,它返回写入的值,如果失败,则返回EOF。类似fgetc()和getc(),putc()的作用也相当于fputc(),但它可能被实现为一个宏。putchar()相当于putc(c, stdout),它把单个字符写到标准输出。
#include<stdio.h>
int fputc(intc, FILE *stream);
int putc(intc, FILE *stream);
int putchar(intc);
注意:putchar和getchar都是把字符当作int类型而不是char类型来使用的,这就允许文件结尾EOF取值为-1。
相关文章推荐
- C语言多文件编程
- 16-C语言模块化编程(多文件编程)
- C语言之文件系统编程(1)
- 【C语言】多文件编程
- 02 vim 配置文件的简单修改方法(满足C语言编程需求)
- 读华为C语言编程规范(函数、头文件)
- [新手编程训练项目]005——C语言文件夹文件信息输出002:递归输出指定文件夹中的文件信息
- linux编程(C语言读取配置文件)
- C语言模块化开发(多文件编程)
- linux 下C语言编程库文件处理与Makefile编写
- C语言简单的多文件编程【注意事项/易错点】 文章仍在编辑中
- 怎样才能使用C语言编程生成的exe文件运行后不立刻结束
- c语言静态库.h文件的注意事项(一个编程菜鸟记录自己的编程路程)
- Linux Unicode 编程--C语言如何使用/生成UTF-8编码格式的文件
- Linux下的C语言编程——系统调用read和write函数实现文件拷贝
- 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法!
- C语言编程获取PE文件导入函数
- C语言:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。
- Linux 文件编程及通用C语言的文件编程
- C语言编程中从密码文件获取数据的函数总结