c基础(6) 文件操作

1.读文件                                  2.写文件                                         三.fputs,fgets 行读取和写入

  四. fprintf,fscanf格式化读写文件内容                    二.fwrite,fread二进制的读写

   stat 函数                        fseek,ftell,rewind                     remove                     rename  fflush( 文件流)  刷新缓存

1.读文件 

int main2()
{
	FILE *fp = fopen("D:\\Code\\a.txt", "r");
	if (fp == NULL)
	{
		printf("文件打开失败!\n");
		return -1;
	}
	char ch;
	while ((ch = fgetc(fp))!=EOF)
	{
		printf("%c\n", ch);
	}
	fclose(fp);            关闭
	return EXIT_SUCCESS;
}

   1.先使用fopen函数获取FILE类型文件 的指针 ,可以获得 w形式,a追加形式  rb wb二进制形式,成功返回文件指针,失败返回NULL

   2.使用 fgetc 读取文件内容,参数使用或取得文件指针,  读取一个光标后移一位,   结束标志是EOF(-1),最后fclose关闭 文件指针

2.写文件

int main()
{
	FILE * fp = fopen("../../a.txt", "w");
	char ch = 'a';
	fputc(ch, fp);
	ch = 'b';
	fputc(ch, fp);
	fclose(fp);  }

   1.a文件不存在不会创建, w wb文件存在则会覆盖文件, 文件不存在则会创建文件

  三.fputs,fgets 行读取和写入

int main()
{
    char * p = "hello world";
    FILE * fp = fopen("a.txt", "w");
    FILE * fp2 = fopen("a.txt", "r");

    fputs(p, fp);

    char buf[1024];   //1KB
    fgets(buf, 1024, fp2);
    printf("%s\n", buf);
    fclose(fp);
    fclose(fp2);            }

四. fprintf,fscanf格式化读写文件内容


int main()
{
    FILE * fp1 = fopen("../f.txt", "w");
    FILE * fp2 = fopen("../f.txt", "r");

    fprintf(fp1, "%d+%d=%d\n", 1, 2, 3);     格式写入文件,在文件中 1+2=3

    int a, b, c;
    fscanf(fp1, "%d+%d=%d\n", &a, &b, &c);   格式读文件
    
    printf("%d   %d   %d\n", a, b, c);          1 2 3

    fclose(fp1);
    fclose(fp2);
    return 0;        }

二.fwrite,fread二进制的读写

   1.fwrite 参数 , 写的内容   ,   按照char大小写11个   刚好写完 hello world      文件占11个字节

   2.如果是写 int arr[]={1,2,3}  则占  4*3个字节大小

int main()
{
	char arr[16] = "hello world";

	FILE * fp = fopen("../b.txt", "wb");

	fwrite(arr, sizeof(char), 11, fp);

	fclose(fp);
	return EXIT_SUCCESS;
}

   使用  feof 判断读二进制文件时,是否读完

int main()
{
	FILE * fp = fopen("../../b.txt", "rb");

	int arr[10] = {0};
	int i = 0;
	while (!feof(fp))
	{
		fread(&arr[i++], sizeof(int), 1, fp);  
	}

	fclose(fp);
	printf("%d\n", arr[0]);
	printf("%d\n", arr[1]);
	printf("%d\n", arr[2]);
	printf("%d\n", arr[3]);
	return -1;
}

stat 函数

   是一个结构体,还有很多信息   st_size字节大小

#include <sys/stat.h>
int main()
{
	struct  stat s;
	stat("test01.exe", &s);

	printf("文件编码:%d\n", s.st_size);

	return EXIT_SUCCESS;
}

fseek,ftell,rewind

 文件光标操作 从文件结尾 向移动 移动fseek(fp, -5, SEEK_END);     fseek(fp, 6, SEEK_SET);    fseek(fp, 6, SEEK_CUR); 

  int ftell(文件流)获取光标当前位置        rewind(文件流)   重置文件光标到开始位置

remove

   删除文件  remove("文件路径")     成功返回0   

rename  

    重命名    rename(" 原文件","  新名字")      成功返回0   

fflush( 文件流)  刷新缓存

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值