1.fgets(char *s,int size,FILE *stream):
功能:从stream读取字符串到s中,读取大小比size小1,遇到EOF或者’\n’结束,如果遇到’\n’结束,会将这个字符也读写入到s中
参数: s:缓冲区的首地址
size:读取的大小
Stream:文件指针
返回值:成功返回s,失败或者EOF返回NULL
2.fputs(char *s,FILE *stream):
功能:将s中的字符串写到stream中
参数: s:缓冲区的首地址
stream:文件指针
返回值:成功返回写入字符的个数,失败返回EOF
3.fprintf(FILE *stream,const char *format,...):
功能:向指定的文件中输出信息(格式化(字符串)输出)
参数: stream:文件指针
format:控制格式
返回值:成功返回输出字符的个数(>0),失败返回(<0)的值
4.sprintf(char *str,const char *format,...):
功能:将格式化好的字符串写到str中
参数: str:首地址
format:控制格式
返回值:成功返回输出字符的个数(>0),失败返回(<0)的值
5.snprintf(char *str,size_t size,const char *format,...):
功能:将格式化好的字符串写到str中,最多写size-1个字符,最后一个补’\0’
参数: str:首地址
size: 控制字符的个数
format:控制格式
返回值:成功返回输出字符的个数(>0),失败返回(<0)的值
6.time_t time(time_t *tloc):
功能:获取系统的时间(秒钟)
参数: tloc:通过形参获取结果,如果写为NULL通过返回值获取时间
返回值:成功返回时间(秒钟),失败返回((time_t)-1)并置位错误码
7.struct tm *localtime(const time_t*timep):
功能:根据秒钟转化出来年月日时分秒
参数: timep:秒钟
返回值:成功返回tm结构体指针,失败返回NULL,置位错误码
struct tm {
int tm_sec; //秒钟
int tm_min; //分钟
int tm_hour; //小时
int tm_mday; //日
int tm_mon; //月
int tm_year; //年
int tm_wday; //周几
int tm_yday; //一年中的第几天
int tm_isdst; //夏令时,已被废弃
}
例:将当前时间写到文件中,按ctrl +c后退出后支持断点续写(行号会接着输出)
#include <stdio.h>
#include <time.h>
#include <string.h>
//获取行号
int get_line(FILE *fp){
char buf[20]={0};
int line=1;
while(fgets(buf,sizeof(buf),fp)!=NULL){
if(strlen(buf)==sizeof(buf)-1){
if(buf[(sizeof(buf)-2)]!='\n'){
continue;
}
}
line++;
}
return line;
}
int main(int argc, char const *argv[])
{
FILE *fp;
time_t t,told;//定义一个变量
int line=1;
struct tm *tm;//定义一个结构类型变量
t=told=0;
if((fp=fopen("./time.txt","a+"))==NULL){
perror("open file error");
return -1;
}
line=get_line(fp);
while(1){
t=time(NULL);//获取系统时间
if(t==((time_t)(-1))){
perror("get time error");
return -1;
}
if(t!=told){
told=t;//实时刷新
tm=localtime(&t);//根据秒钟转换年月日时分秒
if(tm==NULL){
perror("change time error");
return -1;
}
fprintf(fp,"%4d %4d-%02d-%02d %02d:%02d:%02d week=%d\n",line++,tm->tm_year+1900,
tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,tm->tm_wday);
fflush(fp);
}
}
return 0;
}
8.fread(void *ptr,size_t size,size_t nmemb,FILE *stream):
功能:从stream读取数据到ptr中,读取nmemb个size
参数: ptr:存放读取到的数据
size:每一项的大小
nmemb:项的个数
Stream:文件指针
返回值:成功返回读取的项目个数,失败返回值小于项目个数,需要调用feof或ferror判断是什么原因出错的
9.feof(FILE *stream):
功能:如果读到文件的结尾返回真
参数: stream:文件指针
10.ferror(FILE *stream):
功能:如果读到文件出错返回真
参数: stream:文件指针
11.fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream):
功能:从ptr写数据到stream中,写nmemb个size
参数: ptr:存放读取到的数据
size:每一项的大小
nmemb:项的个数
Stream:文件指针
返回值:成功返回读取的项目个数,失败返回值小于项目个数
12.rewind(FILE *stream):
功能:定位光标的位置到文件的开头
参数:Stream:文件指针
13.fseek(FILE *stream,long offset,int whence):
功能:设置文件中光标的位置
参数:stream:文件指针
offset:偏移
>0 向后偏移
=0 不偏移
<0 向前偏移
whence:
SEEK_SET:开头
SEEK_CUR:当前位置
SEEK_END:结尾
返回值:成功返回0,失败返回-1置位错误码
14.ftell(FILE *stream):
功能:返回光标的位置(获取那个值)
参数:Stream:文件指针
返回值:成功返回光标的位置,失败返回-1置位错误码