簡體   English   中英

使用ctime的分段錯誤

[英]Segmentation fault using 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的經驗。我在以前的課程中學習過Assembly,但是非常簡短。 我試圖閱讀time.h的API,但是我真的無法找到解決方案。

我非常感謝您能獲得的任何幫助或提示!

謝謝Z

函數ctime期望為const time_t * 您可能想要:

printf("\nAccess: %s",ctime(&result.st_atime));
                            ^

請用

ctime(&result.st_atime)

別忘了

#include <time.h>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM