访问本地文件夹,遍历文件将其重命名为小写,但不会保留

时间:2015-01-13 06:00:01

标签: c

目的:将目录中包含的文件重命名为小写。

我所知道的:使用fts库等的代码取自这位非常有帮助的人。 https://keramida.wordpress.com/2009/07/05/fts3-or-avoiding-to-reinvent-the-wheel/

使用GDB,我可以浏览代码并看到实际上,文件是小写的(Ex.DSC_2048.JPG变为dsc_2048.jpg)。但是,在我运行程序之后,我返回检查包含这些文件的文件夹,它们仍以大写字母命名。

以下是我重命名为小写的代码段:

    case FTS_F:
    {
        for (int i = 0; i < strlen(p->fts_name); i++)
        {
            p->fts_name[i] = tolower(p->fts_name[i]);
        }
        break;
    }

p是指向包含文件信息的结构的指针。 FTS_F是由fts指定它是&#34;普通文件&#34;。一旦知道它是普通文件,它就会运行这种情况。

问题可能是提供的结构是内容的副本,而不是内容本身?如果是这样,我该怎么做呢?

感谢。

1 个答案:

答案 0 :(得分:2)

您的代码仅(危险地)编写存储已读取的文件名的程序存储器,您实际上并没有告诉操作系统更改文件系统中的名称。为此,请使用rename