私は次のようなアルゴリズムを持っています
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"
}
何か助け、提案はありますか?