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);
}