
譜面データを読むときに
譜面データを読むときに
このサイトの太鼓の鉄人を参考にしながら太鼓の達人もどきを作ろうとしているのですが、譜面を追加するときに一曲ごとにフォルダを作ってその中に譜面のデータなどをいれるようにしたいのですが、このようにすると譜面のデータを読むときにどのようにパスを指定すればいいのかがわからないのですが、どうすれば上手くいくでしょうか。 

Re:譜面データを読むときに
日本語おかしくてすいません。自分でもなんて言っていいかわからなくて…
曲ごとのフォルダの名前はプログラムを作った後に決めるわけじゃないですか、となるとそのフォルダの中のファイルにアクセスしたいときにどうすればアクセスできるかがわからなくて困っています。
曲ごとのフォルダの名前はプログラムを作った後に決めるわけじゃないですか、となるとそのフォルダの中のファイルにアクセスしたいときにどうすればアクセスできるかがわからなくて困っています。
Re:譜面データを読むときに
むむむ... さっぱり分かりませんが、こういうことかな?
sprintf(fullpath,"%s/%s",folder,filename);
とりあえず、参考にされたページのURLと、作りかけのソースを貼ってみましょうか。
sprintf(fullpath,"%s/%s",folder,filename);
とりあえず、参考にされたページのURLと、作りかけのソースを貼ってみましょうか。
Re:譜面データを読むときに
えーと、まだ頭の中で考えているだけでソースは書いていません(汗)
stepmaniaって言うゲームがあるじゃないですか。あれのように曲を追加できるようにしたいのですが、プログラムを作る段階ではどのようなフォルダ名になるかがわかりませんよね?なのでfopenで譜面を読むにしてもパスがわからず、開けないじゃないですか。この時どうすれば開けるかが知りたいのですが…
stepmaniaって言うゲームがあるじゃないですか。あれのように曲を追加できるようにしたいのですが、プログラムを作る段階ではどのようなフォルダ名になるかがわかりませんよね?なのでfopenで譜面を読むにしてもパスがわからず、開けないじゃないですか。この時どうすれば開けるかが知りたいのですが…
Re:譜面データを読むときに
フォルダ内のファイルを検索して処理するということでしょうか?
WIN32_FIND_DATA fd;
HANDLE hFind;
hFind = FindFirstFile(pattern,&fd);
if(hFind==(HANDLE)-1) return;
do{
printf(fd.cFileName);
}while(FindNextFile(hFind,&fd));
FindClose(hFind);
WIN32_FIND_DATA fd;
HANDLE hFind;
hFind = FindFirstFile(pattern,&fd);
if(hFind==(HANDLE)-1) return;
do{
printf(fd.cFileName);
}while(FindNextFile(hFind,&fd));
FindClose(hFind);
Re:譜面データを読むときに
そんな時は「FindFirstFile」でググってみるといいですよ。
http://www.google.co.jp/search?hl=ja&q= ... lr=lang_ja
リンク先を見ればフォルダ内のファイルのリストアップの仕方が書いてあります。
http://www.google.co.jp/search?hl=ja&q= ... lr=lang_ja
リンク先を見ればフォルダ内のファイルのリストアップの仕方が書いてあります。
Re:譜面データを読むときに
win32という単語が出てくると言うことはwin32APIを使うということですよね。
私はwin32APIを勉強してきてないのですがこの処理をしたいとなるとやはり勉強してこなくてはいけないですよね…
Cの標準関数でなんとかならないものでしょうか?
私はwin32APIを勉強してきてないのですがこの処理をしたいとなるとやはり勉強してこなくてはいけないですよね…
Cの標準関数でなんとかならないものでしょうか?
Re:譜面データを読むときに
そんなに抵抗すること無いと思いますが、どうでしょう?
ookamiさんのプログラムどこか解らないでしょうか?
解りやすく書かれていると思いますが。
fd.cFileNameがファイル名です。
ファイルが見つかる限りクルクルループを周ります。
後ろの3文字を見れば欲しいファイルかどうかがわかるでしょう。
私の書いたリンク先にあるプログラムを見ればif文ひとつでフォルダかどうか判断する方法も書いてあります。
Cの標準関数にはフォルダ内のフォルダやファイルを列挙する関数はありません。
ookamiさんのプログラムどこか解らないでしょうか?
解りやすく書かれていると思いますが。
fd.cFileNameがファイル名です。
ファイルが見つかる限りクルクルループを周ります。
後ろの3文字を見れば欲しいファイルかどうかがわかるでしょう。
私の書いたリンク先にあるプログラムを見ればif文ひとつでフォルダかどうか判断する方法も書いてあります。
Cの標準関数にはフォルダ内のフォルダやファイルを列挙する関数はありません。
Re:譜面データを読むときに
以前(1年半くらい前?)
この掲示板に提示されたソースなら持ってます

この掲示板に提示されたソースなら持ってます
#include <stdio.h> #include <dirent.h> int main(void) { struct dirent* f; DIR* fd; fd = opendir("."); if (fd == NULL) { printf("open dir error\n"); return 0; } while (f = readdir(fd)) { printf("%s\n", f->d_name); } closedir(fd); return 0; }WinAPI無しの方法ですね。
