1.写一个日志文件,将程序启动后,每一秒的时间写入到文件中
#include <myhead.h>
#include<time.h>
#include <unistd.h>
int main()
{
//定义文件指针
FILE *fp = NULL;
if ((fp = fopen("./time.txt", "w")) == NULL)
{
//strerror:将错误吗转变为错误信息
printf("errno:%s\n", strerror(errno));
return -1;
}
int count = 0;
while (count != 10)
{
//定义变量储存描述
time_t sys_time = time(NULL);
//将秒数转换为结构体
struct tm *time_ptr = localtime(&sys_time);
char buf[128] = "";
snprintf(buf, sizeof(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);
printf("buf=%s\n", buf);
fwrite(buf, strlen(buf), 1, fp); //单字符吸入
count++;
sleep(1);
}
fclose(fp);
return 0;
}
运行结果:
2.使用fread、fwrite完成两个文件的拷贝,不允许只读写一次
//使用fread、fwrite完成两个文件的拷贝,不允许只读写一次
#include <myhead.h>
#define SIZE 1024 // 定义缓冲区大小
int main(int argc, char const *argv[])
{
FILE *sfp, *rfp;
char buffer[SIZE]; // 缓冲区
size_t m; // 实际读取的字节数
// 打开源文件和目标文件
sfp = fopen("one.txt", "r");
if (sfp == NULL)
{
perror("无法打开源文件");
return -1;
}
rfp = fopen("two.txt", "w");
if (rfp == NULL)
{
perror("无法打开目标文件");
fclose(sfp); // 关闭已打开的源文件
return -1;
}
// 循环读取源文件并写入目标文件
while ((m = fread(buffer, 1, SIZE, sfp)) > 0)
{
fwrite(buffer, 1, m, rfp);
}
// 检查是否因为错误而提前结束循环
if (ferror(sfp) || ferror(rfp))
{
perror("文件拷贝过程中发生错误");
fclose(sfp);
fclose(rfp);
return -1;
}
// 关闭文件
fclose(sfp);
fclose(rfp);
printf("文件拷贝完成。\n");
return 0;
}
源文件:
目标文件拷贝后:(原为空)