我想获取宿主语言文件的时间(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_atimespec
或 stat.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.
我有这样的功能:
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_atimespec
或 stat.st_mtimespec
return 由 stat(filename, &stat)
或 lstat(filename, &stat)
编辑
我知道我将不得不更改我的大部分 ft_display_time()
功能,但我想知道是否有任何方法可以用正确的语言获得 ctime()
输出。
Scusa,但是 我 不知道如何通过仅使用另一个 ctime()
类函数来做到这一点。如果我是你,我会尝试不同的方法:
用 execv(), just like in /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.