1、要求创建一个time.txt,存储内容格式如下:
[1] 2022-07-28 17:15:06
[2] 2022-07-28 17:15:07
[3] 2022-07-28 17:15:08
/******ctrl + c退出程序,过一会儿之后重新启动程序******/
/******重新运行程序后,继续在上次结束位置写入******/
[1] 2022-07-28 17:15:06
[2] 2022-07-28 17:15:07
[3] 2022-07-28 17:15:08 <-------------------从上次结束位置,继续写入
[4] 2022-07-28 17:16:31
[5] 2022-07-28 17:16:32
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <string.h>
int main(int argc, const char *argv[])
{
time_t t;
int lines=0;
char str[32]={0};
struct tm *lt=NULL;
FILE *fp=fopen("./time.txt","a+");
if(NULL==fp){
perror("fopen");
return -1;
}
while(fgets(str,sizeof(str),fp)!=NULL){
if(str[strlen(str)-1]=='\n')
lines++;
}
while(1){
time(&t);
lt=localtime(&t);
lines++;
fprintf(fp,"[%d] %d-%02d-%02d %02d:%02d:%02d\n",lines,\
lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday,\
lt->tm_hour,lt->tm_min,lt->tm_sec);
fflush(fp);
fprintf(stdout,"[%d] %d-%02d-%02d %02d:%02d:%02d\r",lines,\
lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday,\
lt->tm_hour,lt->tm_min,lt->tm_sec);
fflush(stdout);
sleep(1);
}
fclose(fp);
return 0;
}
测试:
2、 要求用文件IO拷贝一张图片
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main(int argc, const char *argv[])
{
if(argc<3){
fputs("传参不足\n",stderr);
return -1;
}
int fd_r=open(argv[1],O_RDONLY);
int fd_w=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664);
if(fd_r<0 || fd_w<0){
perror("open");
return -1;
}
char str[32]={0};
ssize_t size=0;
while((size=read(fd_r,str,sizeof(str)))>0){
write(fd_w,str,size);
bzero(str,sizeof(str));
}
fputs("拷贝完成\n",stdout);
close(fd_r);
close(fd_w);
return 0;
}
测试:
3、 要求用标准IO拷贝一张图片
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
if(argc<3){
fputs("传参不足\n",stderr);
return -1;
}
FILE *fp_r=fopen(argv[1],"r");
FILE *fp_w=fopen(argv[2],"w");
if(NULL==fp_r || NULL==fp_w){
perror("fopen");
return -1;
}
char str[32]={0};
size_t size=0;
while((size=fread(str,1,sizeof(str),fp_r))!=0){
fwrite(str,size,1,fp_w);
bzero(str,sizeof(str));
}
fputs("拷贝完成\n",stdout);
fclose(fp_r);
fclose(fp_w);
return 0;
}
测试: