目录
写一个日志文件,将程序启动后,每一秒的时间写入到文件中
代码:
/*******************************************/
文件名:tm.c
/*******************************************/
#include <myhead.h>
int main(int argc, char const *argv[])
{
//创建文件指针
FILE *fp = NULL;
//追加形式打开文件
if ((fp = fopen("./tm.txt", "a")) == NULL)
{
perror("fopen error");
return -1;
}
//定义字符数组接收时间信息
char buf[21] = "";
//定义字符数组保留数据
char temp_buf[21] = "";
while (1)
{
//将光标置于句首
fseek(fp,0,SEEK_SET);
//接收时间的结构体
time_t sys_time = time(NULL);
//创建指针
struct tm *time_ptr = localtime(&sys_time);
//将时间内容合并成字符串赋给接收用的字符串
sprintf(buf, "%4d-%2d-%2d %2d-%2d-%2d\n", time_ptr->tm_year + 1900, time_ptr->tm_mon + 1, time_ptr->tm_mday, time_ptr->tm_hour, time_ptr->tm_min, time_ptr->tm_sec);
//判断时间接收信息是否有变化
if (strcmp(buf, temp_buf) == 0)
{
continue;
}
else
{
printf("%s", buf);
//将信息传入文件
fwrite(buf, sizeof(buf) - 1, 1, fp);
//将此次信息设为判断依据
strcpy(temp_buf, buf);
}
}
//关闭文件
fclose(fp);
return 0;
}
结果:
2、使用fread、fwrite完成两个文件的拷贝
代码:
/*******************************************/
文件名:io1.c
/*******************************************/
#include <myhead.h>
int main(int argc, char const *argv[])
{
//创建第一个文件指针
FILE *fp = NULL;
//只读形式打开文件
if ((fp = fopen("./a.txt", "r")) == NULL)
{
perror("fopen error");
return -1;
}
//创建第二个文件指针
FILE *dfp = NULL;
//追加形式打开文件
if ((dfp = fopen("./b.txt", "a")) == NULL)
{
perror("fopen error");
return -1;
}
//定义字符数组接收信息
char rbuf[10] = "";
//定义整型接收复制字符串长度
int res=1;
//判断是否还能接收到字符串
while (res!=0)
{
//获取文件一信息的同时获取此次获取字符串长度
res = fread(rbuf, 1, sizeof(rbuf), fp);
//将获取的字符串赋给文件二
fwrite(rbuf, 1, res, dfp);
}
//关闭文件一
fclose(fp);
//关闭文件二
fclose(dfp);
return 0;
}
结果:
3、实现对bmp图像的读写操作
代码:
/*******************************************/
文件名:io1.c
/*******************************************/
#include <myhead.h>
int main(int argc, char const *argv[])
{
//定义文件指针
FILE *fp = NULL;
//读写形式打开文件
if ((fp = fopen("./gg.bmp", "r+")) == NULL)
{
perror("fopen error");
return -1;
}
//定义整型接收文件大小
int img_size = 0;
//将光标定位在2个字节后
fseek(fp, 2, SEEK_SET);
//读取文件大小
fread(&img_size, sizeof(img_size), 1, fp);
//将光标定位在54个字节后,前54个字节是文件信息,后面才是图片内容
fseek(fp,54,SEEK_SET);
printf("size=%d\n", img_size);
//定义无符号字符数组设置想要改成的颜色
unsigned char color[3] = {255, 0, 0};
//外层循环控制改变颜色的宽度
for (int i = 0; i < 480; i++)
{
//内层循环控制改变颜色的高度
for (int j = 0; j < 1280; j++)
{
//将颜色信息赋给图片文件
fwrite(color, sizeof(color), 1, fp);
}
}
//关闭文件
fclose(fp);
return 0;
}