文件文件文件

1.文件基本操作

        文件的打开基本格式:

        FILE *fp;

        fp=fopen(文件名,使用文件方式);

文件使用方式

可以进行文件创建加个*

1.r(只读)        2.w(只写*)        3.a(追加)        4.rb(只读)        5.wb(只写*)        6.ab(追加)

7.r+(读写)        8.w+(读写*)        9.a+(读写)        10.rb+(读写)        11.wb+(读写*)

12.ab+(读写)

例只读形式打开文档格式:
        FILE *fp;

        fp=fopen("1.txt","w");


        文件关闭的基本格式:

        fclose(文件指针);

        正常关闭返回值为0;失败返回值EOF;

2.文件写入

1.fputc函数

作用将一个字符写进磁盘文件

一般形式:
        ch=fputc(ch,fp);

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;										
    char ch;										
    if((fp = fopen("01.txt", "w")) == NULL)			
    {
        printf("不能打开文件\n");
        exit(0);
    }
	printf("请输入名人名言:\n");
    ch = getchar();									
    while(ch != '#')									
    {
        fputc(ch, fp);								
        ch = getchar();							
    }
    fclose(fp);										
	return 0;
}

2.fputs函数

作用将一个字符串写入文件中。

一般形式:
        fputs(字符串,文件指针);

#include<stdio.h>
#include<process.h>
int main()
{
	FILE *fp;
	char filename[30],str[30];							
	printf("请输入文件路径:\n");
	scanf("%s",filename);						
	if((fp=fopen(filename,"w"))==NULL)					
	{
		printf("不能打开文件!\n请按任意键结束\n");
		getchar();
		exit(0);
	}
	printf("请输入歌词:\n");						
	getchar();
	gets(str);
	fputs(str,fp);								
	fclose(fp);
	return 0;
}

3.fprintf函数

 将对应的文件写入对应的文档之中。

一般形式:

        ch=fprintf(文件类型指针,格式字符串,输出列表);

#include<stdio.h>
#include<process.h>
int main()
{
	FILE *fp;/*定义一个指向FILE类型结构体的指针变量*/
    int i=1;
    int j=2;
	char filename[30]; 	/*定义一个字符型数组*/
	printf("请输入保存文件路径:\n");/*输入文件名*/
	scanf("%s",filename); 
	if((fp=fopen(filename,"w"))==NULL) /*判断文件是否打开失败*/
	{
		printf("不能打开文件!\n请按任意键结束\n");
		getchar();
		exit(0);
	}
	fprintf(fp,"%4d\n",i);/*写入fp所指的磁盘文件中*/
    fprintf(fp,"%2d",i);
    fprintf(fp,"%4d\n",i);
    fprintf(fp,"%d",i);
    fprintf(fp,"%3d",j);
    fprintf(fp,"%4d\n",i);
	fclose(fp);
    return 0;
}

4.fwrite函数

将buffer地址信息输出count次,每次将size字节写入fp所指向的文件中。

一般形式:

        fwrite(buffer,size,count,fp);

#include<stdio.h>
#include<process.h>
struct address_list									/*定义结构体,存储实习生成绩信息*/
{
    char name[10];
    char adr[20];
    char tel[15];
} info[100];
void save(char *name, int n)							/*自定义save函数*/
{
    FILE *fp;										/*定义一个指向FILE类型结构体的指针变量*/
    int i;
    if((fp = fopen(name, "wb")) == NULL)					/*以只写方式打开指定文件*/
    {
        printf("不能打开文件\n");
        exit(0);
    }
    for(i = 0; i < n; i++)
        if(fwrite(&info[i], sizeof(struct address_list), 1, fp) != 1)	/*将一组数据输出到fp所指的文件中*/
            printf("写入有误\n");					/*如果写入文件不成功,则输出错误*/
    fclose(fp);										/*关闭文件*/
}
void show(char *name, int n)							/*自定义show函数*/
{
    int i;
    FILE *fp;										/*定义一个指向FILE类型结构体的指针变量*/
    if((fp = fopen(name, "rb")) == NULL)					/*以只读方式打开指定文件*/
    {
        printf("不能打开文件\n");
        exit(0);
    } 
    for(i = 0; i < n; i++)
    {
        fread(&info[i], sizeof(struct address_list), 1, fp);		/*从fp所指向的文件读入数据存到score数组中*/
        printf("%15s%20s%20s\n", info[i].name, info[i].adr,info[i].tel);
    }
    fclose(fp);										/*关闭文件*/
}
int main()
{
    int i, n;										/*变量类型为基本整型*/
    char filename[50];								/*数组为字符型*/
    printf("一共几名?\n");
    scanf("%d", &n);									/*输入实习生数*/
    printf("请输入文件路径:\n");
    scanf("%s", filename);							/*输入文件所在路径及名称*/
    printf("请输入姓名,地址,手机号\n");
    for (i = 0; i < n; i++)								/*输入实习生信息*/
    {
        printf("NO%d", i + 1);
        scanf("%s%s%s", info[i].name, info[i].adr, info[i].tel);
        save(filename, n);							/*调用函数save*/
    }
	printf("信息如下:\n");
    show(filename, n);								/*调用函数show*/
}

3.文件读取

1.fgetc函数

作用从指定的文件之中,读取一个字符赋予给ch

一般形式:
        ch=fgetc(ch,fp);

#include<stdio.h>
int main()
{
    FILE *fp;										
    char ch;										
    fp = fopen("poem.txt", "r");					
    ch = fgetc(fp);									
    while(ch != EOF)								
    {
        putchar(ch);								
        ch = fgetc(fp);								
    }
	printf("\n");
    fclose(fp);										
	return 0;
}

2.fgets函数

作用从指定的文件之中,读取一个字符串赋予给ch

一般形式:
        fgets(字符串,文件指针);

#include<stdio.h>
#include<process.h>
int main()
{
	FILE *fp;
	char filename[30],str[30];					
	printf("请输入文件路径:\n");
	scanf("%s",filename);					
	if((fp=fopen(filename,"r"))==NULL)			
	{
		printf("不能打开文件!\n请按任意键结束\n");
		getchar();
		exit(0);
	}
	fgets(str,sizeof(str),fp);					
	printf("%s",str);
	printf("\n");
	fclose(fp);
	return 0;
}

3.fscanf函数

 将对应的文件写入对应的文档之中。

一般形式:

        fscanf(文件类型指针,格式字符串,输入列表);

#include<stdio.h>
#include<process.h>
int main()
{
	FILE *fp;
	char i,j;
	char filename[30];						
	printf("请输入文件路径:\n");
	scanf("%s",filename);				
	if((fp=fopen(filename,"r"))==NULL)			
	{
		printf("不能打开文件!\n请按任意键继续\n");
		getchar();
		exit(0);
	}
    for(i=0;i<15;i++)
	{
		fscanf(fp,"%c",&j);
		printf("%d answer is:%5c\n",i+1,j);
	}
	fclose(fp);
	fclose(fp);
	return 0;
}

4.fread函数

从fp指向的文件夹读取count次,每次读取size字节,读取的信息保存在buffer地址之中。

一般形式:

        fread(buffer,size,count,fp);

#include<stdio.h>
#include<process.h>
struct address_list									/*定义结构体,存储实习生成绩信息*/
{
    char name[10];
    char adr[20];
    char tel[15];
} info[100];
void save(char *name, int n)							/*自定义save函数*/
{
    FILE *fp;										/*定义一个指向FILE类型结构体的指针变量*/
    int i;
    if((fp = fopen(name, "wb")) == NULL)					/*以只写方式打开指定文件*/
    {
        printf("不能打开文件\n");
        exit(0);
    }
    for(i = 0; i < n; i++)
        if(fwrite(&info[i], sizeof(struct address_list), 1, fp) != 1)	/*将一组数据输出到fp所指的文件中*/
            printf("写入有误\n");					/*如果写入文件不成功,则输出错误*/
    fclose(fp);										/*关闭文件*/
}
void show(char *name, int n)							/*自定义show函数*/
{
    int i;
    FILE *fp;										/*定义一个指向FILE类型结构体的指针变量*/
    if((fp = fopen(name, "rb")) == NULL)					/*以只读方式打开指定文件*/
    {
        printf("不能打开文件\n");
        exit(0);
    } 
    for(i = 0; i < n; i++)
    {
        fread(&info[i], sizeof(struct address_list), 1, fp);		/*从fp所指向的文件读入数据存到score数组中*/
        printf("%15s%20s%20s\n", info[i].name, info[i].adr,info[i].tel);
    }
    fclose(fp);										/*关闭文件*/
}
int main()
{
    int i, n;										/*变量类型为基本整型*/
    char filename[50];								/*数组为字符型*/
    printf("一共几名?\n");
    scanf("%d", &n);									/*输入实习生数*/
    printf("请输入文件路径:\n");
    scanf("%s", filename);							/*输入文件所在路径及名称*/
    printf("请输入姓名,地址,手机号\n");
    for (i = 0; i < n; i++)								/*输入实习生信息*/
    {
        printf("NO%d", i + 1);
        scanf("%s%s%s", info[i].name, info[i].adr, info[i].tel);
        save(filename, n);							/*调用函数save*/
    }
	printf("信息如下:\n");
    show(filename, n);								/*调用函数show*/
}

4.文件定位

1.fseek函数

fseek函数的作用是移动文件内部的位置指针:

        一般形式:

        fseek(文件类型指针,位移量,起始点);

起始点                |                表示符号                |        数字表示

文件首                |                SEEK-SET             |                0

文件当前位置     |                SEEK-CUR             |                1

文件尾                |                SEEK-END             |                2

例子:当前位置后退20个字节

fseek(fp,-20L,1);

2.rewind函数

rewind函数用来讲位置指针返回开头,没有返回值。

        一般形式:

        int rewind(文件类型指针);

3.ftell函数

ftell函数可获取文件当前位置

        一般形式:

        long ftell(文件类型指针);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值