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”