#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
if (argc != 2)
{
fprintf(stderr, "Usage:\n\t%s <inputfile>\n", argv[0]);
exit(-1);
}
FILE *srcfp = fopen(argv[1], "r");
fseek(srcfp, 0, SEEK_END);
int filesize = ftell(srcfp);
char ch;
for (int i = 0; i < filesize; i++)
{
fseek(srcfp, -1 - i, SEEK_END);
ch = fgetc(srcfp);
printf("%c", ch);
}
fclose(srcfp);
return 0;
}
- 每隔1秒打印带编号的时间信息,ctrl+c终止程序,再次运行,编号接着上次,编号要连续,程序现象如下:
link@ubuntu:~/code/linux/day02$ ./a.out
1:Fri Mar 29 05:33:48 2024
2:Fri Mar 29 05:33:49 2024
^C
link@ubuntu:~/code/linux/day02$ ./a.out
3:Fri Mar 29 05:33:51 2024
4:Fri Mar 29 05:33:52 2024
5:Fri Mar 29 05:33:53 2024
^C
link@ubuntu:~/code/linux/day02$ ./a.out
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char **argv)
{
time_t t;
FILE *fp = fopen(".time.dat", "a+");
if (fp == NULL)
{
perror("can't open file");
exit(-1);
}
int num = 0;
int ret;
int cnt = 0;
int i;
for (i = 0; ; i++)
{
ret = fseek(fp, -1 - i, SEEK_END);
if (ret == -1)
break;
char ch = fgetc(fp);
if (ch == '\n')
cnt++;
if (cnt == 2)
{
fscanf(fp, "%d", &num);
break;
}
}
fseek(fp, 0, SEEK_END);
num++;
while (1)
{
time(&t);
char *timestr = ctime(&t);
fprintf(fp, "%d:%s", num, timestr);
fflush(fp);
printf("%d:%s", num, timestr);
num++;
sleep(1);
}
fclose(fp);
return 0;
}