r 只读打开。流位于文件的开头。
r+ 在 r 基础上加上写权限。
w 只写打开。如果文件存在则清空文件内容。不存在则创建。
w+ 在 w 基础上加上读权限。
a 只写追加打开。如果文件存在则保留文件内容。不存在则创建。
a+ 在 a 的基础上加上读权限。
b b (二进制文件)与上列权限搭配使用,作为最后一个字符,或作为两个字符中任意一个字符之间的字符。
int fprintf(FILE *stream, const char *format, ...)
参数
stream
指向写入的文件的结构体指针
format
占位符
...
与占位符相对应的变量名
返回值
成功
成功写入的字节数
失败
返回 -1
7. fscanf
fscanf()函数
功能
以文本形式,从文件中按照一定格式读取文件内容到变量中
头文件
#include <stdio.h>
声明
int fscanf(FILE *stream, const char *format, ...)
参数
stream
指向要读取的文件的结构体指针
format
占位符
...
与占位符相对应的变量名
返回值
成功
成功读取的字节数
失败
返回 -1
占位符(部分) 演示如下demo2 demo3
%*s 或 %d 跳过该类型的数据 (到空格或\t止)
%[width]s 读指定宽度的数据
%[a-z] 匹配 a 到 z 中任意字符(尽可能多的匹配,不区分大小写)
%[aBc] 匹配 a 、 B 、 c 中的一员,贪婪性
%[^a] 匹配非 a 的任意字符,贪婪性
%[^a-z] 表示读取除 a-z 以外的字符
8. fgets
功能:从指定的流中读取一行数据,当读取(n-1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,加上一个 ‘\0’ 成功返回 声明:char *fgets(char *str, int n, FILE *stream); n:读取的最大字符数(包括 '\0’ ),通常使用 sizeof(str)
#include<stdio.h>#include<string.h>intmain(){
FILE *fp;char*w_buf ="hallo world!";char r_buf[128]={0};int len =0;char*send =" fprintf success!";if((fp =fopen("./file","w+"))==NULL){printf("error from fopen\n");}if(fwrite(w_buf,strlen(w_buf),1, fp)!=1){printf("error from fwrite\n");}
len =ftell(fp);if(len ==-1){printf("error from ftell\n");}else{printf("len = %d\n",len);}rewind(fp);if(fread(r_buf, len,1, fp)!=1){printf("error from fread\n");}else{printf("%s\n", r_buf);}if(fprintf(fp,"%s", send)==-1){printf("error from fprintf\n");}else{rewind(fp);if(fscanf(fp,"%[^\t]s", r_buf)==-1){printf("error from fscanf\n");}else{printf("%s\n", r_buf);}}fclose(fp);return0;}
运行结果:
三、格式化字符串函数
sprintf()函数
功能
将变量按照一定的格式合并成字符串形式
头文件
#include <stdio.h>
声明
int sprintf(char* str, const char* format, …)
参数
str
合成目标字符串首地址
format
占位符
...
与占位符相对应的变量名
返回值
成功
目标字符串实际长度
失败
返回 -1
备注
匹配到字符串结束符 \0 结束
. .
sscanf()函数
功能
从字符串中按照格式读取数据至变量中
头文件
#include <stdio.h>
声明
int sscanf(char* str, const char* format, ...)
参数
str
字符串首地址
format
占位符
...
与占位符相对应的变量名
返回值
成功
读取数据赋值给变量个数
str 为空字符串时
返回 -1
备注
当匹配到与对应占位符格式不一致时结束
占位符(部分)
到空格或\t或类型不同结束本个占位符的匹配
%*s 或 %d 跳过该类型的数据
%[width]s 读指定宽度的数据
%[a-z] 匹配 a 到 z 中任意字符
%[aBc] 匹配 a 、 B 、 c 中的一员,贪婪性
%[^a] 匹配非 a 的任意字符,贪婪性
%[^a-z] 表示读取除 a-z 以外的字符