gpt4 book ai didi

c - 获取文件并对其文件大小进行操作

转载 作者:行者123 更新时间:2023-11-30 14:21:12 25 4
gpt4 key购买 nike

我有一个算法

1.扫描目录中的所有文件(使用C完成)

2.在循环中获取当前文件的文件大小(使用C完成)

3. 如果小于 8 kb,则执行某些操作并将下一个直接文件名存储在数组中(似乎 C 中不支持关联数组)

我已经用 PHP 完成了此操作,但由于不可预见的事件,现在需要用 C 编写。我确实浏览了很多关于 C 的教程,老实说,我低估了我认为获得所需的时间基本正确。

经过相当长的一段时间后,我设法获得了列出目录中文件的代码。

#include <dirent.h> 
#include <stdio.h>
#include <conio.h>

int main(void)
{
char path = "D:\\ffmpeg\\bin\\frames\\";
DIR *d;
struct dirent *dir;
char test;
d = opendir("D:\\ffmpeg\\bin\\frames\\");
if (d)
{
while ((dir = readdir(d)) != NULL)
{
printf("%s\n", dir->d_name);
}

closedir(d);
}
getchar();
return(0);
}

现在很明显,循环中的当前文件由 dir->d_name 表示。我陷入困境的事情是将其附加到 "D:\\ffmpeg\\bin\\frames\\" ,以便路径变为 "D:\\ffmpeg\\bin\\frames\\somename.jpg"

这将帮助我获取文件的直接路径。一旦我得到了,我将获得所需的数据来移动到步骤 2。我现在面临的问题是字符串连接。我尝试了 strcat() 但没有成功。

所以基本上我要寻找的是

while ((dir = readdir(d)) != NULL)
{
// merge "path" and "dir->d_name" to get something similar like
// "D:\\ffmpeg\\bin\\frames\\somename.jpg"
}

有什么帮助、建议吗?

最佳答案

纯 C 中推荐的解决方案是 snprintf :

char buf[MAX_PATH];
snprintf(buf, sizeof(buf), "%s%s", path, dir->d_name);

不要使用strcat()strncat() .

如果您使用的是 MSVC,那么您的 C 实现已经过时了 24 年,并且 snprintf()不可用。您的选择是:

  1. 使用_snprintf()然后buf[sizeof(buf)-1] = '\0';作为解决方法。

  2. 使用 C++ 和 std::string .

  3. 使用 Cygwin。

关于c - 获取文件并对其文件大小进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com