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置位错误码