创作本文的目的:记录自己的学习历程
任务1
1.要求
2.代码
#include <stdio.h>
#include <time.h>
#include <unistd.h>
//简化报错提示
#define MSG_ERR(msg) { \
fprintf(stderr,"line:%d ",__LINE__); \
perror(msg);\
}
//获取当前文件总行数
int get_fileline(FILE *fp)
{
int line = 0;
char c = 0;
while((c=fgetc(fp))!=EOF)
{
if(10 == c)
{
line++;
}
}
return line;
}
int main(int argc, const char *argv[])
{
FILE *fp=fopen("./time.txt","a+");
if(NULL==fp)
{
MSG_ERR("open");
return -1;
}
time_t t;
struct tm *info = NULL;
int line = get_fileline(fp);
//输出时间列表
while(1)
{
t = time(NULL);
info = localtime(&t);
line++;
fprintf(fp,"[%d] %d-%02d-%02d %02d:%02d:%02d\n",\
line,info->tm_year+1900,info->tm_mon+1,info->tm_mday,\
info->tm_hour,info->tm_min,info->tm_sec);
fflush(fp);
sleep(1);
}
if(fclose(fp)<0)
{
MSG_ERR("close");
return -2;
}
return 0;
}
3.运行结果
任务2
1.要求
2.代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#define MSG_ERR(msg) { \
fprintf(stderr,"line:%d ",__LINE__); \
perror(msg);\
}
int main(int argc, const char *argv[])
{
int fp = open("./1.jpg",O_RDONLY);
int fpp = open("./2.jpg",O_RDWR|O_TRUNC|O_CREAT,0775);
if(-1==fp || -1==fpp)
{
MSG_ERR("open");
return -1;
}
char buf[10];
ssize_t res=0;
while(1)
{
bzero(buf,sizeof(buf));
res=read(fp,buf,sizeof(buf));
if(0==res)
{
break;
}
write(fpp,buf,res);
}
if(-1==close(fp)|| -1==close(fpp))
{
MSG_ERR("close");
return -2;
}
return 0;
}
3.运行结果
任务3
1.要求
2.代码
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#define MSG_ERR(msg) { \
fprintf(stderr,"line:%d ",__LINE__); \
perror(msg);\
}
int main(int argc, const char *argv[])
{
FILE *fp = fopen("./1.jpg","r");
FILE *fpp = fopen("./3.jpg","w+");
if(NULL==fp || NULL==fpp)
{
MSG_ERR("open");
return -1;
}
char buf[1];
size_t res=0;
while(1)
{
bzero(buf,sizeof(buf));
res=fread(buf,sizeof(buf),1,fp);
if(0==res)
{
break;
}
fwrite(buf,res,1,fpp);
}
if(fclose(fp)<0|| fclose(fpp)<0)
{
MSG_ERR("close");
return -2;
}
return 0;
}