アプリ版:「スタンプのみでお礼する」機能のリリースについて

カレントディレクトリ内のファイルの中で指定した拡張子のファイルを全て配列に読み込ませるプログラムを書こうと頑張っています。

しかし、方針がわからず困っています。
方針だけでも良いので教えていただけないでしょうか?

よろしくお願いいたします。

A 回答 (2件)

質問する時には、開発&実行環境と、何がわからないのか具体的に記載して下さい。


方針とは何でしょう?
C言語においての配列などの考え方が解らないのか、ディレクトリを取得する方法がわからないのでしょうか?

理論だけ簡単に記載すると…
ディレクトリとは、ファイル目次が書かれた特殊なファイルです。
目的のディレクトリファイルから、ファイル名を読み出して、メモリに格納すれば良いです。
MacやLinuxなら、opendir, readdir この辺の関数で読み出せます。
Winなら、FindFirstFileEx, FindNextFile この辺の関数で読み出せます。
配列に取り込む場合、Winの場合はショートなのかロングなのか、Mac/LinuxならUTFの扱い、など考慮して設計して下さい。

この回答への補足

ありがとうございます。無事書くことができました。

補足日時:2011/04/24 01:58
    • good
    • 0
この回答へのお礼

ありがとうございます。初めて耳にする関数なので参考にさせていただきます。

作業環境は
osがwindowsで、visualstudioでコンパイルしています。

特にディレクトリを取得する方法がわかっていません。

よろしくお願いします。

お礼日時:2011/04/24 01:04

http://q.hatena.ne.jp/1118121349
が参考になるのでは?
printfの代わりに配列に入力するとか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>

int main( int argc, char *argv[] )
{
char *dir;
DIR *dp;
struct dirent *entry;
struct stat statbuf;

if(argc<2){
dir = getenv("PWD");
}else{
dir = argv[1];
}

if(( dp = opendir(dir) ) == NULL ){
perror("opendir");
exit( EXIT_FAILURE );
}

while((entry = readdir(dp)) != NULL){
stat(entry->d_name, &statbuf);
if(S_ISDIR(statbuf.st_mode)){
fprintf(stdout, "%s/\n", entry->d_name);
}else{
fprintf(stdout, "%s\n", entry->d_name);
}
}

closedir(dp);

return(0);
}

参考サイトを参考にこちらのプログラムを見つけ、コンパイルしました。しかし、dirent.hがincludeできませんでした。問題は何かあるのでしょうか?

作業環境は
osがwindowsで、visualstudioでコンパイルしています。

お礼日時:2011/04/24 01:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!