c-使用ctime的分段错误



我正在进行一个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>

相关内容

  • 没有找到相关文章

最新更新