c语言关于文件的操作

FILE *fopen( const char *filename, const char *mode );
int fclose( FILE *stream );

int fscanf( FILE *stream, const char *format [, argument ]... );
int fprintf( FILE *stream, const char *format [, argument ]...);

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );


int fgetc( FILE *stream );
int fputc( int c, FILE *stream );


char *fgets( char *string, int n, FILE *stream );
int fputs( const char *string, FILE *stream ); 

1.文本文件的读写操作

void main()
{
	int ar[10];

	FILE *fp = fopen("1.txt", "r");
	if(fp == NULL)
	{
		printf("打开文件失败......\n");
		return;
	}

	for(int i=0; i<10; ++i)
	{
		//scanf("%d", &ar[i]); //标准输入
		fscanf(fp, "%d", &ar[i]);
	}

	fclose(fp);
}


void main()
{
	int ar[] = {12,23,34,45,56,67,78,89,90,100};
	int n = sizeof(ar) / sizeof(ar[0]);

	//文件指针
	
	FILE *fp = fopen("1.txt", "w");
	if(fp == NULL)
	{
		printf("打开文件失败.....\n");
		return;
	}

	for(int i=0; i<n; ++i)
	{
		//printf("%d ", ar[i]);  //标准输出函数
		fprintf(fp, "%d ", ar[i]); //重定向输出
	}
	printf("\n");

	fclose(fp);
}

1.文本文件的拷贝

#include<stdio.h>
#include<string.h>

int main()
{
	char fpInname[128];
	char fpOutname[128];
	printf("please input fpIn->");	
	scanf("%s",&fpInname);
	printf("please input fpOut->");
	scanf("%s",&fpOutname);
FILE *fpIn=fopen(fpInname,"r");
if(fpIn==NULL){
	printf("打开文件失败");
}
FILE *fpOut=fopen(fpOutname,"w");

if(fpOut==NULL){
	printf("打开文件失败"); 
} 


char buffer[128]={0};
char *ret=fgets(buffer,128,fpIn);
while(ret!=NULL){
	fputs(buffer,fpOut);
memset(buffer,0,128);
ret=fgets(buffer,128,fpIn);
}

/*
char ch=fgetc(fpIn);
while(ch!=EOF){
	fputc(ch,fpOut);
	ch=fgetc(fpIn);
} 
*/
	fclose(fpIn);
	fclose(fpOut);
return 0;
}

 2.二进制文件的读写

void main()
{
	int ar[10];
	
	FILE *fp = fopen("4.txt", "rb");
	if(fp == NULL)
	{
		printf("打开文件失败.....\n");
		return;
	}
	
	fread(ar, sizeof(int), 10, fp);
	
	fclose(fp);
}



void main()
{
	int ar[] = {12,23,34,45,56,67,78,89,90,100};
	int n = sizeof(ar) / sizeof(ar[0]);

	FILE *fp = fopen("4.txt", "wb");
	if(fp == NULL)
	{
		printf("打开文件失败.....\n");
		return;
	}
	fwrite(ar, sizeof(int), n, fp);

	fclose(fp);
}

3. 图片的拷贝

#include<stdio.h>
#include<assert.h>
int main()
{
	char fp1name[128];
	printf("输入你要拷贝图片的地址-> ");
	scanf("%s",fp1name); 
	char fp2name[128];
	printf("输入你要拷贝到的地址-> ");
	scanf("%s",fp2name);
FILE *fp1=fopen(fp1name,"rb");
FILE *fp2=fopen(fp2name,"wb+");
assert(fp1!=NULL);
assert(fp2!=NULL);
while(!feof(fp1)){
	char ch=fgetc(fp1);
	fputc(ch,fp2);
	
}
printf("拷贝成功!!");
fclose(fp1);
fclose(fp2);
	return 0;
}

EOF与feof()

void main()
{
	FILE *fpIn = fopen("1.txt", "r");
	if(fpIn == NULL)
	{
		printf("打开输入文件失败.....\n");
		return;
	}
	FILE *fpOut = fopen("2.txt", "w");
	if(fpOut == NULL)
	{
		printf("打开输出文件失败.....\n");
		return;
	}

	char ch = fgetc(fpIn);
	while(ch != EOF)       //eof
	{
		fputc(ch, fpOut);
		ch = fgetc(fpIn);
	}
	/*
	while(!feof(fpIn)) //feof这个用法不对的
	{
		char ch = fgetc(fpIn);
		fputc(ch, fpOut);
	}
这个用法不正确*/

	if(feof(fpIn))
		printf("读文件成功.\n");
	else
		printf("读文件失败.\n");

	fclose(fpIn);
	fclose(fpOut);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jhpan666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值