如何打印出ubuntu中的"st_blksize"条数据?

How to print out "st_blksize" of data in ubuntu?

#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char*argv[])
{
    struct stat file;
    int n;
    if (argc != 2)
    {
        printf("Usage: ./a.out <filename>\n");
        exit(-1);
    }

    if ((n = stat(argv[1], &file)) == -1)
    {
        perror(argv[1]);
        exit(-1);
    }

    printf("Block size : %d\n", file.st_blksize);
}

最后一行报错

格式“%d”需要类型为“int”的参数,但参数 2 的类型为“__blksize_t”[-Wformat=]

如何打印出"st_blksize"的数据??

实际上,st_blksize 是一个 unsigned long typedef 数据类型,因此使用

printf("Block size : %ld\n", file_st.blksize);