目录
一、获取系统时间并每隔一秒写入文件
代码
#include<myhead.h>
int main(int argc, const char *argv[])
{
//定义一个文件指针
FILE *fp;
if((fp=fopen("time.txt","a"))==NULL){
perror("fopen error");
return -1;
}
time_t sysTime;
struct tm *nowTm;
//获取系统时间的秒数
time(&sysTime);
//获取当前年月日的时期
nowTm = localtime(&sysTime);
int secL = nowTm->tm_sec-1;
//死循环,持续获取系统时间,并且每隔1s输出
while(1){
if(1==(nowTm->tm_sec-secL)|| 59==secL&& 0==nowTm->tm_sec){
fprintf(fp,"%4d年%02d月%02d日%02d:%02d:%02d\n",\
nowTm->tm_year+1900,\
nowTm->tm_mon+1,\
nowTm->tm_mday,\
nowTm->tm_hour,\
nowTm->tm_min,\
nowTm->tm_sec);
//解放缓冲区,将字符串写入文件
fflush(fp);
secL = nowTm->tm_sec;
}
//获取系统时间的秒数
time(&sysTime);
//获取当前年月日的时期
nowTm = localtime(&sysTime);
}
return 0;
}
效果
二、使用fread、fwrite完成两个文件的拷贝
代码
#include<myhead.h>
int main(int argc, const char *argv[])
{
//定义被拷贝文件的文件指针
FILE *srcfp;
//定义目标文件的文件指针
FILE *dstfp;
//打开要拷贝文件
if((srcfp=fopen("./time.txt","r"))==NULL){
perror("fopen error");
return -1;
}
//打开目标文件
if((dstfp=fopen("./target.txt","w"))==NULL){
perror("fopen error");
return -1;
}
//定义一个搬运工
char buf[20];
//fread和fwrite没有结束的标志,得通过feof和ferror来判断读取结束或者遇到错误
while(1){
//将buf清空,防止前面保存的数据写入后面的位置
memset(buf,0,sizeof(buf));
//读入数据
fread(buf,sizeof(buf),1,srcfp);
//写入目标文件
fwrite(buf,sizeof(buf),1,dstfp);
if(feof(srcfp)){
fprintf(stdout,"读取到文件结尾\n");
break;
}
if(ferror(srcfp)){
perror("ferror error");
break;
}
}
return 0;
}
效果
三、思维导图![0](https://note.youdao.com/yws/res/832/WEBRESOURCEdf0d9e294f92c3d3e4c565d1a2f4d321)