フォルダをスキャンする方法(たとえば、-C:\ Users \ User \ Documents \ HW)を探して、私はユーザーから得る。どのファイルがまったく同じテキストを返す必要があります。以前はdirent.hを使ったことはなかったし、どうやって作業するのか分かりませんでした。Cのdirentヘッダーを使用してフォルダ内のテキストをスキャンする方法
-2
A
答えて
0
あなたがエラーを処理する独自のerror
機能定義:そのファイルがディレクトリであれば基本的には、現在のファイルをstatを
// Standard error function
void fatal_error(const char* message) {
perror(message);
exit(1);
}
トラバース機能を、私たちはそのディレクトリを入力します。ディレクトリ自体では、現在のディレクトリが存在するかどうかを確認することが非常に重要です。これは不定ループにつながる可能性があるからです。
void traverse(const char *pathName){
/* Fetching file info */
struct stat buffer;
if(stat(pathName, &buffer) == -1)
fatalError("Stat error\n");
/* Check if current file is regular, if it is regular, this is where you
will see if your files are identical. Figure out way to do this! I'm
leaving this part for you.
*/
/* However, If it is directory */
if((buffer.st_mode & S_IFMT) == S_IFDIR){
/* We are opening directory */
DIR *directory = opendir(pathName);
if(directory == NULL)
fatalError("Opening directory error\n");
/* Reading every entry from directory */
struct dirent *entry;
char *newPath = NULL;
while((entry = readdir(directory)) != NULL){
/* If file name is not . or .. */
if(strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")){
/* Reallocating space for new path */
char *tmp = realloc(newPath, strlen(pathName) + strlen(entry->d_name) + 2);
if(tmp == NULL)
fatalError("Realloc error\n");
newPath = tmp;
/* Creating new path as: old_path/file_name */
strcpy(newPath, pathName);
strcat(newPath, "/");
strcat(newPath, entry->d_name);
/* Recursive function call */
traverse(newPath);
}
}
/* Since we always reallocate space, this is one memory location, so we free that memory*/
free(newPath);
if(closedir(directory) == -1)
fatalError("Closing directory error\n");
}
}
ます。またchdir()
機能を使用してこれを行うことができ、それはそのように多分簡単ですが、それは非常にilustratingされているので、私は、あなたにこの方法を見せたかったです。しかし、トラフのフォルダ/ファイル階層をトラバースするもっとも簡単な方法は、NFTW
です。 man
ページで確認してください。
ご不明な点がございましたら、お気軽にお問い合わせください。
+0
Aleksandarさん、ありがとうございました! –
関連する問題
- 1. 端末を使用してフォルダ内のテキストを検索する
- 2. asp.netを使用してスキャンしたPDFにテキストを挿入する方法
- 3. ヘッダーを使用してWebサービスを消費する方法C#?
- 4. PerlでOLEを使用してOutlookフォルダをスキャンする
- 5. C++でヘッダーなしのDLLを使用する方法
- 6. JavaScriptを使用してスライドショーのようにヘッダー内のテキストを変更する
- 7. clojureを使用してフォルダ内のすべてのファイルを含める方法
- 8. コントローラをPlay Framework 1.4.3のフォルダ内のフォルダ内で使用する方法
- 9. セレンを使用してテキストを選択する方法とC#
- 10. Unity IoC:フォルダ内のプラグイン/タイプのスキャン/解決方法
- 11. C#を使用してASP.NETアプリケーション内のフォルダ内のファイルを見つける方法は?
- 12. キャプチャグループを作成する方法Rubyの「スキャン」方法を使用してオプション?
- 13. バッチコマンドを使用してフォルダ内のすべてのアイテムを別のフォルダに移動する方法
- 14. フォルダのファイルをスキャンする
- 15. C#を使用してスキャンしたイメージを切り抜く方法は?
- 16. Cを使用してsitecoreのフォルダからフィールドを取得する方法#
- 17. Gitを使用してプロジェクト内のフォルダを更新する方法
- 18. pythonを使用してmtimeでフォルダ内の画像を整理する方法
- 19. C#を使用してフォルダ内のファイルを連続して読み取る方法は?
- 20. ダイアログボックスを使用してリストビュー内のTextViewのテキストを変更する方法
- 21. 親フォルダのフォルダ内にあるファイル内のデータを読み込む方法c#
- 22. ews manage apiを使用してClutterフォルダ内のアイテムを検索する方法C#
- 23. ItextSharp:ITextsharpを使用して動的ヘッダーを設定する方法。 C#.Net
- 24. happybaseを使用して2つのタイムスタンプの範囲をスキャンする方法は?
- 25. 電話カメラを使用してWebアプリケーションでテキストをスキャンして抽出する
- 26. anglejsを使用してhtml要素内のテキストを取得する方法は?
- 27. jqueryを使用してラベルタグ内のテキストを変更する方法
- 28. Python:CSSを使用してフォーム内のテキスト領域をオーバーライドする方法
- 29. IFを使用してセル内の数値とテキストをチェックする方法
- 30. innerHTMLを使用してpタグ内のテキストをクラスで変更する方法
アイデアは、ディレクトリパスに 'opendir'を使い、' readdir'をループしてすべてのファイルを探し出し、各ファイルに対して 'open'、' read'、 'close'を持つ必要があります。また、ファイルごとに 'fopen'、' fread'、 'fclose'を使うこともできます。終了したら、「closedir」と呼ぶべきです。 –
世界に助けを求める前に、自分でいくつかの調査をしてください。ありがとうございました。 – alk
Henrikありがとう!そして、私が試みたものを推測する。失敗しました。だから、 "世界に助けを求める"というのは間違っていますか?これは質問と回答のためのウェブサイトです! –