标准I/O

fopen函数

FILE *fopFILE *fopen(const char *path, const char *mode);

fopen打开由path指定的文件,并把它与一个文件流关联起来。mode参数指定文件的打开方式。执行成功返回一个非空的FILE*指针,失败时返回NULL.

其中mode参数的取值有:

r,rb:只读方式打开;

w,wb:以只写方式打开,并把文件长度截短为0

a,ab:以写方式打开,新内容追加在文件尾;

r+,rb+,r+b:以更新方式打开(读写);

w+,wb+,w+b:以更新方式打开,并把文件长度截短为0

a+,ab+,a+b:以更新方式打开,新内容追加在文件尾。

字母b表示文件是一个二进制文件而不是文本文件。

int main()
{
	FILE *fp = fopen("abc", "ab+");
	if (fp == NULL)
	{
		perror ("fopen");
		return -1;
	}
	printf ("打开文件成功\n");
    return 0;	
}

fread函数

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

数据从文件流stream读到ptr指向的数据缓冲区里。size参数指定每个数据记录的长度,nmemb给出要传输的记录的个数。函数的返回值是成功读到数据缓冲区里的记录的个数(不是字节数)

int main()
{
	FILE *fp = fopen("BTree.c", "ab+");
	if (fp == NULL)
	{
		perror ("fopen");
		return -1;
	}
	
	char buf[SIZE] = {0};
	
	// feof 判断是否读到文件结尾,如果读到文件结尾,它返回一个非0 的值
	int ret;
	while (ret = fread(buf, sizeof(char), SIZE-1, fp))
	{	
		buf[ret*sizeof(char)] = '\0';
		printf ("%s\n", buf);
	}
	
	if(ret == 0 && !feof(fp))
	{
		perror ("fread");
		return -1;
	}
	
	printf ("文件读取结束\n");
    return 0;	
}

fwrite()函数:

从指定的数据缓冲区里取出数据记录,并把它们写到输出流中。它的返回值是成功写入的记录个数。

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

//文件复制
int main()
{
	FILE *fp = fopen("1.ppt", "ab+");
	if (fp == NULL)
	{
		perror ("fopen");
		return -1;
	}
	
	FILE *fp1 = fopen("2.ppt", "ab+");
	if (fp1 == NULL)
	{
		perror ("fopen");
		return -1;
	}
	
	char buf[SIZE] = {0};
	
	int ret;
	while (ret = fread(buf, sizeof(char), SIZE, fp))
	{	
		fwrite(buf, sizeof(char), ret, fp1);
	}
	
	if(ret == 0 && !feof(fp))
	{
		perror ("fread");
		return -1;
	}
	
	printf ("文件读取结束\n");
	
	fclose(fp);
	fclose(fp1);
    return 0;	
}

fclose()函数用于关闭指定的文件流。

int fclose(FILE *fp);

 

flush()用于把文件流里所有未写出的数据立即写出。

使用这个函数可以确保在程序继续执行之前重要的数据都已经被写到磁盘上。

调用fclose函数隐含执行了一次fflush操作,所以不必在调用fclose之前调用fflush


fgetc()从文件流里取出下一个字节并把它作为一个字符返回。当它到达文件结尾或出现错误时,返回EOFgetc()fgetc()一样,但它有可能被实现为一个宏。getchar()相当于getc(stdin)

 

//文件的复制
#include <stdio.h>
#define SIZE 1024
int main()
{
	FILE *fp = fopen("1.ppt", "ab+");
	if (fp == NULL)
	{
		perror ("fopen");
		return -1;
	}
	
	FILE *fp1 = fopen("2.ppt", "ab+");
	if (fp1 == NULL)
	{
		perror ("fopen");
		return -1;
	}
	
	char buf[SIZE] = {0};
	
	int ret;
	while (1)
	{	
		int c = fgetc(fp);
		if (c == EOF)
			break;
		fputc(c, fp1);
	}
	
	fclose(fp);
	fclose(fp1);
    return 0;	
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值