我有一个算法
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"
}
任何帮助,建议?