(C语言)FILE——文件,fopen,fclose,fputc,fputs,fprintf(未校正)

1.文件操作简介

文件在读写之前,需要先打开文件;读写之后,需要及时关闭文件。

打开文件

FILE* fopen(char* filename,char* mode);

mode为打开模式。

关闭文件

int fclose(char* filename);

如果成功返回0,否则返回EOF。

FILE *fp1,*fp2;//定义文件指针 

//打开文件
fp1 = fopen("C:\\Users\\Alexe\\Desktop\\SQL.txt","w"); 

 

2.文件操作模式表


3.文件写入

写文件

putc()

作用:用于向文件写入一个字符

putc()

作用:用于向文件写入一个字符串

fprintf()

作用:格式化写入文件

函数原型:int fprintf(FILE* file,const char *format,...);

从字符串中获取数据,例如:

fprintf(fp,"I am a %s,I am %d years old.","Student",18);

fwrite

作用:写二进制文件

函数原型: unsigned int fwrite(const void* str,usigned int size,unsigned int count,FILE* file);

str为带写入数据的指针,size为待写入数据的字节数,count为待写入数据个数。


 

4.文件读取 

读文件

fgetc()

从文件中读取一个字节

char a = fgetc(fp);

fgets()

从文件中读取指定字符串

char* fgets(char* buf,int maxCount,FILE* file);

buf为一个字符数组,用来存储读到的字符串。

fscanf()

格式化读取数据

int fscanf(FILE* file,const char* format,...);

其中format表示文件中的i字符串输出时遵循的格式;

举例说明:

fscanf(fp,"%s%d",work,&age);

从文件fp中读取一个字符串和一个整形数据,分别复制给work和age。需要注意的是,因为数据只能从实参传递给形参,其中的参数应为指针变量,所以需要对整形变量age进行取地址操作。

fread 

读取二进制文件

函数原型:unsigned int fread(void* dstBuf,usigned int elementSize,unsigned int count,FILE* file);


 

5.文件位置指针

fseek()

fseek()的作用是将文件位置指针移动到指定位置

int fseek(FILE* fp,long offset,int origin);

参数offset表示以参数origin为基准使文件位置指针移动的偏移量;

参数origin表示文件位置指针的起始位置:

SEEK_SET:该参数对应的数值为0,表示从文件起始位置开始偏移。

SEEK_CUR:该参数对应额度数值为1,表示相对文件位置指针当前所在位置进行偏移。

SEEK_END:该参数对应的值为2,表示相对文件末尾进行偏移。

rewind()

将文件位置指针移动到文件的开头

void rewind(FILE* fp);

ftell()

获取文件位置还真当前指向的位置

long ftell(FILE* fp);


6.案例代码展示

打开文件 

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

int main(){
//打开文件
FILE* fp;
//r为只读模式 
fp = fopen("C:\\Users\\Alexe\\Desktop\\XwSQL.txt","r");
if(fp==NULL){
    printf("File open error");
    exit(0);
}    
    printf("File has open! ");


}


 将数据保存在文本文件中

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

typedef struct Student{
	int sno;//学号
	char name[20];//姓名
	int age;
	char sex[5]; 
}Stu;

int main(){
	FILE *fp1,*fp2;
	Stu stu;
	int no = 1001;
	char name[20]="zhangsan";
	int age = 19;
	char sex[5]="male";
	//文本操作
	//w为只写模式 
	fp1 = fopen("C:\\Users\\Alexe\\Desktop\\XwSQL.txt","w");
	if(fp1==NULL){
	 printf("文件无法打开!");
	 return -1; 
} 
//写入 
fputs(name,fp1);
fputc('\n',fp1);
fprintf(fp1,"%d %s %d %s\n",no,name,age,sex);
fclose(fp1);


}


读取文件中的数据

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

typedef struct Student{
	int sno;//学号
	char name[20];//姓名
	int age;
	char sex[5]; 
}Stu;

int main(){
FILE *fp1,*fp2;
int no,age;
char name[20];
char sex[5];
char c;
Stu s;

fp1 = fopen("C:\\Users\\Alexe\\Desktop\\XwSQL.txt","r");
if(fp1==NULL){
	printf("文件打开失败!");
	return -1; 
}
printf("文本文件:\n");
fgets(name,10,fp1);
printf("第一行:\n%s\n",name);

//格式化输出
fscanf(fp1,"%d%s%d%s",&no,name,&age,&sex);
printf("第二行:\n%-5d%-10s%-5d%-5s\n\n",no,name,age,sex); 

fclose(fp1);
}


删除指定信息 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值