IO:函数(文件函数)

part0:关于文件的函数

打开文件:FILE*fopen(const char *path,const char *mode)

参数:

path:打开为文件

mode:打开方式

r:      只读

r+: 可读可写

w:    只写

w+: 可读可写;文件不存在创建,文件存在清空,流被定义到文件开头

a:   追加;文件不存在创建,存在追加,流被定义到文件末尾

a+:  可读可写;文件不存在创建,存在追加,开始进行读时从头读,写时被定义到文件末尾

1.打开文件:fopen

返回值:成功_文件流;失败:NULL;

2.关闭文件:fclose

参数文件流;功能:关闭文件;

3.读写文件:

fgetc(每次一字符读写)

返回值:成功:读到字符

              失败:或读到文件末尾:EOF(-1);

FILE*fp=fopen("./text.c","r");   //打开文件

if(fp==NULL)
{
perror("fopen err");
return -1;
}
printf("fopen success\n");
int ch=fgetc(fp);
if(ch==EOF)
{
perror("fgetc err");
return -1;
}
printf("%c\n",ch);

fclose(fp);
return 0;

fputc:向文件中写入字符

fputc(int c,FILE *stream):"c"写入字符;stream:文件流

返回值:成功:输入字符的ascii; 失败:EOF

FILE*fp=fopen("./test.c","w+");
if(fp==null)
{
perror("fopen err");
return -1;
}
fputc(‘a’,fp);///文件中加入///
fputc('65',fp);

int ch=fgetc;//调用一次读一个字符,多次调用继续向后读取字符
printf("%c\n",ch);

fclose(fp);
return 0;

fgets:每次一串字符读写

fgets(buf,5,fp):“buf”存放读取字符串的首地址;“5”读几个;fp:文件流

FILE *fp=fopen("./text.c""r+");
if(fp==null)
{
perror("fopen err");
return -1;
}
char buf[32]="";
fgets(buf,5,fp);
printf("%s",buf)
return 0;

fputs:像文件中写字符

fputs(s,*fp)要写的内容,文件流 

返回值:成功非负数;失败EOF

char buf[32]="world";
fputs("hello",fp);
rewind(fp);

fputs(buf,fp);
rewind(fp);

fputs("abc",fp);
fgets(buf,10,fp);
printf("%s\n",buf);
fclose(fp);
return 0;

二进制读写文件

fread:从文件流读取多个元素

fread(ptr,size,nmemb,stream):“ptr”读取元素“size”元素大小;“nmemb”读取几个“stream”要读的文件

返回值:成功“读取个数”;失败“0”

fwrite:在文件中写多个元素

fwrite(ptr,size,nememb,fp)"ptr"输入元素"size"输入元素大小"nemember"输入几个"fp"要写入的文件

int arr[3]={0},  arr1[3]={1,2,3};
FILE*fp=fopen("./text.c","w+");
if(fp==null)
{
perror("fopen err");
return -1;
}
//要写的数据,一个数据大小,多少个数据,文件流//
fwrite(arr1,sizeof(int),3,fp);
rewind(fp);
fread(arr,sizeof(int),3,fp);
for(int i=0;i<3;i++)
printf("%d",arr[i]);

fclose(fp);
return0;

rewind:将文件指针定位到起始位置

void rewind(FILE *stream) 文件流

ftell:获取位置指针当前文件位置

ftell(FILE*stream)“文件流”

返回值:成功“当前文件位置” 失败“-1”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值