1>写一个日志文件,将程序启动后,每一秒的时间写入到文件中
#include <time.h>
#include<myhead.h>
int main(int argc, const char *argv[])
{
//打开一个文件
FILE *fp=NULL;
if((fp=fopen("./日志文件.txt","a+"))==NULL)
{
perror("error");
return -1;
}
char buf[128];
time_t last_time = 0; // 初始化为0,表示从未写入过
while (1)
{
time_t now_time = time(NULL);
// 判断现在不是上次写入的时间
if (now_time != last_time)
{
struct tm *tm_now = localtime(&now_time);
sprintf( buf,"%4d-%2d-%2d %2d:%2d:%2d\n",\
tm_now->tm_year+1900,\
tm_now->tm_mon+1,\
tm_now->tm_mday,\
tm_now->tm_hour,\
tm_now->tm_min,\
tm_now->tm_sec);
// 写入到文件
fwrite(buf, sizeof(char), strlen(buf), fp);
fflush(fp);
// 更新上次写入时间
last_time = now_time;
// 打印到终端
// printf("%s", buf);
}
}
fclose(fp);
return 0;
}
2>使用fread、fwrite完成两个文件的拷贝
1 #include<myhead.h>
2 int main(int argc, const char *argv[])
3 {
4 //判断传入文件
5 if(argc!=3)
6 {
7 perror("file error");
8 return -1;
9 }
10 //打开文件
11 FILE *fp1=NULL; //源文件的打开
12 if((fp1=fopen(argv[1],"r"))==NULL)
13 {
14 perror("fopen error");
15 return -1;
16 }
17
18 FILE *fp2=NULL; //目标文件的打开
19 if((fp2=fopen(argv[2],"w"))==NULL)
20 {
21 perror("fopen error");
22 return -1;
23 }
24 char buf[128]=""; // 临时容器
25 while(!feof(fp1)) //feof区分文件是否结束
26 {
27 int res=fread(buf,1,sizeof(buf),fp1); //参数:地址\每一项大小 / 总数 /文件指针
28 fwrite(buf,1,res,fp2);
29 }
30
31 //关闭文件
32 fclose(fp1);
33 fclose(fp1);
34
35 return 0;
36 }
37
3>实现对dmp图像的读写操作
1 #include<myhead.h>
2 int main(int argc, const char *argv[])
3 {
4 //定义文件指针
5 //打开文件
6 FILE *fp1=NULL; //打开源文件
7 if((fp1=fopen("./gg.bmp","r"))==NULL)
8 {
9 perror("fopen error");
10 return -1;
11 }
12
13 /* FILE *fp2=NULL; //打开目标文件
14 if((fp2=fopen("./new.bmp","w"))==NULL)
15 {
16 perror("fopen error");
17 return -1;
18 }*/
19
20 int size=0; //文件大小
21
22 fseek(fp1,2,SEEK_SET); //偏移2
23
24 fread(&size,sizeof(size),1,fp1);
25
26 printf("size = %d\n",size);
27 unsigned char color[3] = {0, 0, 255};
28 for(int i=0; i<960/2; i++)
29 {
30 for(int j=0;j<1280; j++)
31 {
32 fwrite(color, sizeof(color), 1, fp1);
33 }
34 }
35
36
37
38
39 //关闭文件
40 fclose(fp1);
41 return 0;
42 }