前提・実現したいこと
1つのフォルダに入っているすべてのテキストファイルをcsvに出力するツールの作成。
発生している問題・エラーメッセージ
1 : int (*)(dirent*)’ から ‘int (*)(const dirent*)’ への無効な変換です 2 : エラー: expected ‘;’ before ‘}’ token
該当のソースコード
C++
1 2#include <stdio.h> 3#include <dirent.h> 4#include <sys/types.h> 5#include <stdib.h> 6#include <string.h> 7 8int selects(struct dirent *dir){ 9 if(dir->d_name[0])=='*.INI'){ 10 return (0); 11 } 12} 13 14int main(int argc,char **argv){ 15 16 DIR *dr; 17 const char *dir=*(argv+1); 18 struct dirent **fileList; 19 dr=opendir(dir); 20 int i=scandir(dir,&fileList,selects,NULL); 21 22 23 24 25 26 27 28} 29 30 31 32 33 34 35 36 37
試したこと
グーグルにて使えそうな関数を検索
selects関数なしだとコンパイルは通りました。
補足情報(FW/ツールのバージョンなど)
C++はじめたての初心者です。
丸投げのような形の質問になっておりました。申し訳ございません。
上記ソースは「.ini」ファイルを仮に当てはめています。
流れとして、
①フォルダ読み込み
②ファイル抽出
③ファイルの一行ずつ読み込む
④","を後ろに入れながらファイル出力
というイメージです。
まず第1,2段階のフォルダオープンからのファイル抽出ができません。
また、そのあとの流れもこのままでよいかわからず、手詰まりになっています。
よろしくお願いします。
提示のコードではどういう不具合があるんでしょうか
目についたところで、
> if(dir->d_name[0])=='*.INI'){
あと、C++じゃなくて、 Cって気がする。
ディレクトリ走査は OS 依存です。
使用している OS を追記してください
>y_waiwaiさん
ご回答いただきありがとうございます。
お返事が遅くなり申し訳ありません。
このソースをコンパイルすると、selects関数に関するエラーがでます。今すぐに確認できる状況ではないので、明日確認後修正させていただきます。
>pepperleafさん
ご回答いただきありがとうございます。お返事が遅くなり申し訳ありません。
確かにC言語ですね。。。
if文の中身がやはり間違っているのでしょうか、、、
>tiitoiさん
ご回答いただきありがとうございます。お返事が遅くなり申し訳ありません。
使用OS windows10
です。
OSにディレクトリの走査が依存いていることは知りませんでした。
ありがとうございます。
Windows で質問のコードはそもそもコンパイルが通るのでしょうか?
dirent.h は POSIX 系の OS でしか使えないと思っていましたが、開発は WSL 上で行っていたりするのでしょうか?
>tiitoiさん
開発はlinuxで行っています。
Windowsでも通りませんでした。。。
回答2件
あなたの回答
tips
プレビュー