c - 如何更改 ls -l 自定义命令的月份格式

标签 c stat localtime

当您发出此命令时:

find ok/ -exec ls -l -d {} \;

终端显示:

drwxrwxrwx 2 alexia alexia 4096 8 oct.  15 22:31 ok/

我尝试制作自己的 find 命令来对 stat.h 执行相同的操作:

[...] //Other file information
struct stat fileStat;
stat(path,&fileStat)
char buffer[20];
struct tm *time
time = localtime(&(fileStat.st_mtime));
strftime(buffer, 20, "%b %e  %Y", time);
printf("%s", buffer);

它显示:

[...]
8 Oct  15 22:31 ok/

月份格式不好,我不知道如何正确。

干杯

最佳答案

默认情况下,C 程序使用 C 语言环境运行。看起来您想要不同的区域设置,因此请使用 setlocale()与另一个语言环境一起使用。最简单的是由空字符串指定。 (区域设置的“C”值指定 C 翻译的最小环境;区域设置的“”值指定特定于区域设置的 native 环境。其他实现定义的字符串可以作为 setlocale 的第二个参数传递。 ):

setlocale(LC_TIME, “”);

这只影响时间;您可以使用LC_ALL来更改所有内容。

关于c - 如何更改 ls -l 自定义命令的月份格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306290/

相关文章:

c - 用 C 读取和写入文件

c - 反向逐字打印字符串?

c - 如何在ubuntu中打印出 "st_blksize"的数据?

java - 使用 Java LocalTime 锁定下溢/溢出

C++ std::localtime 夏令时规则 (dst) 欧洲与美国

c - 如何在 C 中只返回字符串的值?

c - 从函数返回字符串会产生垃圾

c - Direntp 当前目录shell C

c++ - 使用 stat 列出文件及其信息

c# - 序列化 NodaTime.LocalTime 时的可选秒数?