我想获取宿主语言文件的时间(ctime(..)?)

I would like to obtain time (ctime(..)?) of a file in host language

我有这样的功能:

void ft_display_time(struct timespec ttime)
{
    char *time_long;
    
    time_long = ctime(&ttime.tv_sec);
    if (time_long)
    {
        ft_printf("%.3s ", time_long + 4);
        ft_printf("%.2s ", time_long + 8);
        ft_printf("%.5s ", time_long + 11);
    }
    else
        ft_putstr("             ");
}

我正在尝试获得像 ls -l 那样的输出。但是 ctime(const time_t *clock) 会 return 一个英文字符串(因此月份显示为 "Dec" "Jan" "Aug" ...),而 ls -l 以宿主语言格式输出月份(例如法语)。

示例:

./myprog --long file
-rw-r--r--  1 lotolo  staff   0 Sep 17 19:55 c

/bin/ls -l
-rw-r--r--  1 lotolo  staff   0 17 Set 19:55 c

我怎样才能得到宿主语言格式的输出?

例如,ttime 等于 stat.st_atimespecstat.st_mtimespec return 由 stat(filename, &stat)lstat(filename, &stat) 编辑 我知道我将不得不更改我的大部分 ft_display_time() 功能,但我想知道是否有任何方法可以用正确的语言获得 ctime() 输出。

Scusa,但是 不知道如何通过仅使用另一个 ctime() 类函数来做到这一点。如果我是你,我会尝试不同的方法:

execv(), just like in For maximum pleasure, combine it with Redirecting exec output to a buffer or file 执行 /bin/ls


如果你想做一个普遍的改变,那么你可以使用 Petesh 所说的:

setlocale(LC_ALL, NULL)

其中,引用 ref,:

Sets locale information to be used by the current program, either changing the entire locale or portions of it.