我正在进行一个stat()-调用,该调用返回一个包含要提取的信息的结构。到目前为止,我成功地得到了我想要的东西,直到获得访问、修改和最后一次更改文件的时间。
我想用ctime得到它,然后用printf打印出来。
printf("File: %s",argv[1]);
printf("nSize: %d",result.st_size);
printf(" Blocks: %d",result.st_blocks);
printf(" IO Block: %d",result.st_blksize);
printf("nDevice: 0x%x",result.st_dev);
printf(" Inode: %d",result.st_ino);
printf(" Links: %d",result.st_nlink);
// printf("nAccess: %s",ctime(result.st_atime));
此代码运行良好,并提供以下输出:
File: /etc/passwd
Size: 2250043 Blocks: 4416 IO Block: 4096
Device: 0x6804 Inode: 9738432 Links: 1
如果我取消注释我想获得访问时间的最后一行,我会得到以下输出:
File: /etc/passwd
Size: 2250043 Blocks: 4416 IO Block: 4096
Segmentation fault
我该怎么解决这个问题?此外,为什么在打印出设备、Inode和链接之前,我会出现分段错误?难道不应该打印出来,然后生成分段错误吗?
我对C没有任何经验。我在以前的课程中学习过汇编,但时间很短。我试着阅读time.h的API,但我真的无法找到解决方案。
我非常感谢你给我的任何帮助或建议!
谢谢,Z
函数ctime
需要一个const time_t *
。你可能想要:
printf("nAccess: %s",ctime(&result.st_atime));
^
请使用
ctime(&result.st_atime)
别忘了
#include <time.h>