[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/24 21:17 / Filesize : 258 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.38【環境依存OK】



1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.37【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1178432985/l50
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


152 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:12:19 ]
>>149
0 こそが真のヌルポインタだよ。
ただ、これだけだと整数型とか小数型の値としてもとれるから、
NULL ってマクロを使ってそれを回避できるようにもしてるだけ。

153 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:53:37 ]
>>152
そんな隙だらけの説明しかできないんならヌルポインタについて語るのはやめとけ。
↓これでいいだろ。
www.kouno.jp/home/c_faq/c5.html

154 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:57:54 ]
自分の読解力の無さを人の文章力のせいにするな

155 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:10:02 ]
確かに隙が多かったな。

>ただ、これだけだと整数型とか小数型の値としてもとれるから、

これは、

#ただ、これだけだと「プログラムを読む人間」 が、この 0 が
#数値の 0 か、ヌルポインタの 0 かを、そこからだけでは読み取れないので、

という風な意味。

156 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:13:43 ]
自分の文章力の無さを人の読解力のせいにするな

157 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:18:00 ]
コピペうざす

158 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:25:38 ]
自分のうざさを人のうざさのせいにするな

159 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:33:51 ]
彼は分裂症で、彼の否定する自分自身とは彼自身では違う人格なのだから良いんだよ。

160 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:54:04 ]
何もかもみんなお前のせいだ



161 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:32:34 ]
for(;;)
{
struct st* a;
get(&a); /* callocで構造体配列作成しaに割り当て */
free(a);
}
これをコンパイルすると、syntax error: missing';' before 'type'
とでます。アドバイスを頂けないでしょうか。お願いします。

162 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:36:43 ]
申し訳ありません。161の件は宣言の前にif-break;を入れていたのが原因
のようです。しかし、freeのときにエラーが出るのがわからなく
その件について助言お願い致します。

163 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:42:07 ]
>>162
その原因の行も書いてよ。

自分がコンパイラになったつもりでたどればわかる

164 名前:デフォルトの名無しさん [2007/06/07(木) 14:47:38 ]
aをNULLで初期化したらエラー消えるはず

165 名前:デフォルトの名無しさん [2007/06/07(木) 14:49:08 ]
は関係ありませんねすいません

166 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:18:12 ]
161です。レスありがとうございました。自己解決しました。
if(FALSE)break;
struct st* a;
get(&a);
free(a);
だとコンパイルできなくて
struct st* a;
if(FALSE)break;
get(&a);
free(a);
だと実行時エラー。
struct st* a = NULL;
if(FALSE)break;
get(&a);
free(a);
で解決しました。C言語に慣れておらずいまいち理解できないので
すごく変な勘違いしてそうですね…。

167 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:27:24 ]
変数の宣言がブロックの先頭じゃなかった、という落ちか・・・
実行時エラーは何か勘違いしてる

168 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:32:37 ]
おそらく、get() の先のcallocで取ったポインタを * つけないで代入してるんだろうな

169 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:32:46 ]
実行時エラーというか実行時警告というか
あれは未初期化ポインタに対するアクセスのエラーだから
リリースビルドにすれば実行時に落ちることは無い
しかしその前にコンパイラの方で未初期化に対するどうたらこうたらっていう
警告が出るはずなんだが…

170 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:34:10 ]
>>169
get で &つけて呼び出してるから、警告は出ないんじゃないかな。
その関数で代入失敗してるっぽい。



171 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:38:09 ]
そうかごめん
試しにそうしたら確かに通っちゃったよ…

172 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:41:04 ]
コンパイルの段階で出てくるのが コンパイルエラー
(リンクの段階で出てくるのが リンクエラー)
出来上がった実行ファイルを実行して出てくるのが 実行時エラー

m(c)alloc で得られたポインタではない非NULL 値を realloc しようとしたんじゃねーかな?

173 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:44:43 ]
って calloc と書いてあったな…
get(struct st**) の実装晒したほうが早いぞ

174 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:52:12 ]
getの実装は既存のライブラリです。でも一応、callocの部分を
確認したところキャストはされていませんでした。
ブロックの先頭・値初期化の不備は、お恥ずかしいミスです。
ところで、C++てエラーメッセージがわかりにくくないですか?
関数や引数のクイックインフォも出なくて、難しすぎて泣けてきます。

175 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:56:37 ]
いや、これそのままなら初期化いらないはずなんだって。
getの仕様によるけどな。

176 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:59:17 ]
あ、>>168はキャストのことじゃなくて、参照を考慮にいれてないって
ことでしょうか?でも多分、get()には問題はないはずです。
たった4行のコードでここまで悩める俺みたいなバカは
プログラマに向いてないんでしょうねorz

177 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 16:08:38 ]
>>176
だったら get(arg) の仕様は?

第一引数 arg の内容を書き換えるだけ ならば、
 NULL 初期化しなくても、実行時エラーは出ないつくりになる(はず)。

第一引数 arg の内容を確認してから書き換える ならば、
 NULL 初期化が必須になるだろう。

この違いは get() を作った奴が指示すべきで、それを利用する側は、
その指示に従うしかない。 (で、その指示がない場合は作った奴を呪う)

178 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:47:58 ]
コマンドプロンプトで色々なコマンドが用意されていると思うのですが、
それをC言語で使用するにはどうすればいいのでしょうか?
具体的に言いますと、とりあえずexeファイルにa.txtをD&Dしたらそのディレクトリに
copy_a.txtというファイルを作成したりしたいです。コマンドプロンプトでいうとcp a.txt copy_a.txtですね。
まぁやりたいのはcpコマンドではなくて、javacコマンドとjavaコマンドなのですが・・・。

179 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:51:14 ]
system関数

180 名前:178 mailto:sage [2007/06/07(木) 18:51:42 ]
まぁ、要はJAVAのコンパイルが面倒なのでドラッグするだけで出来るソフトをCで作りたいって話なんです。



181 名前:178 mailto:sage [2007/06/07(木) 18:54:29 ]
>>179
ありがとうございます。
ちょっとやってみます。

182 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:19:13 ]
strcmp(buf, '\0');
でエラーが出るのですが、何か書式を間違ってるでしょうか?
文字列を最後まで1文字ずつ取得して、文字数を数えるプログラムを作ろうとしています。
最後取得したら\0がbufに入ると思うのですが、上の文でエラーが・・・

183 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:23:49 ]
>>182
www.linux.or.jp/JM/html/LDP_man-pages/man3/strcmp.3.html
引数の型が違う。(というかたぶんstrcmp()が何をする関数なのか勘違いしている)

184 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:26:23 ]
そもそもそんな関数呼ぶくらいならstrlenでいいじゃん


185 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:37:02 ]
>>183
とりあえずnullmoji[2]に'\0'を入れてstrcmpをしたら正常に動作しました。
ありがとうございました。

>>184
そういう課題なんです・・・

186 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:42:50 ]
C++でクラスを書くとき、Javaの書き方に合わせようと思って、

#define Public public:
#define Private private:
#define Protected protected:

って定義して、んでヘッダファイルを

Public int getNum();
Public void setNum(int num);

みたいに書いてみたんだけど、これと似たようなことをやる人は多い?
それとも明らかにC++の常識からは外れた書き方?

187 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:46:56 ]
他言語を真似るマクロは愚の骨頂だと俺は思う

なにより読みにくいし、なら java でかけよと言いたい

188 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:52:34 ]
>>186
m9( ´,_‥`)プッ

189 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:56:46 ]
つか
Javaってpublicだのprivateだのの先頭、いつから大文字で書くようになったんだ

190 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:57:08 ]
>>186
PASCAL風に
#define BEGIN }
#define END }
なんてやられたソースをおまえは許せるんだな?



191 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 19:59:41 ]
Bourne shellの作者のSteve BourneがALGOL風のトンチキなマクロを定義して
シェルを書いたのは(勿論悪い意味で)有名

192 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:20:55 ]
>>187
関数一覧をカテゴリ別に並べて書きたくて……

>>188
(´・ω・`)

>>189
いや先頭が小文字のpublicとかは予約語なんで

>>190
……ええと、すいません

193 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:23:51 ]
マクロなんだから予約語も糞もないだろ

194 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:26:05 ]
#define for if(0); else for

とかできるんだぜ。

195 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:29:36 ]
>>186
やるな。
理由は色々あるが、一番実害があるのはこんなところか。

#define public public:

としたとして、

class A {
public void foo();
void bar();
};

の bar のアクセス指定がどうなるか考えてみよう。
これは public だ。

だが、見た目から直感的に感じるのは private だろう。
こういう齟齬が発生するから、してはいけない。

196 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:29:41 ]
>>192
あほすぎw

197 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:37:01 ]
>>194
for (int i=0; ...) {
 // スコープ1
}
// スコープ2

でi がスコープ2 まで有効な特殊系(VCだなっ) を回避する常套句ですな

198 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:41:40 ]
ふるっ

199 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 22:09:01 ]
特殊っていうか、昔はそれで仕様通りだったと思う。

200 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:01:19 ]
そういえばVisual C++で.NETアプリケーションのウィザードを使うと、
public: void Hoge()なんてコードを出していた気がする



201 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:03:36 ]
>>199
それが仕様だったかも知れないが、規格にはなっていない罠。

202 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:06:05 ]
ふるーい規格の話だけど、
それでもなってないの?

203 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:07:51 ]
ARMやドラフトを規格だと言うのなら
規格になっていたと言うがいい

204 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:26:13 ]
なるほど。ドラフト段階でしかこの仕様はなかったわけか。

205 名前:178 mailto:sage [2007/06/07(木) 23:43:26 ]
>>178です。とりあえずサンプルってことで
system("cd c:\\java");
system("java HelloWorld");
で実行したみたのですが、
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
と出てしまいます。普通にコマンドプロンプトでcd c:\javaとjava HelloWorldを打ち込んだときは
正常に動作するのですが、何かsystemでやるときに特別に何かしなければいけない事があるのでしょうか?

206 名前:178 mailto:sage [2007/06/07(木) 23:49:32 ]
というよりも、system("cd c:\\java");のあとに
system("dir")を実行したら、javaディレクトリが表示されずに、
プロジェクトのディレクトリが表示されるのですが・・・

207 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:52:22 ]
system("java c:\\java\\HelloWorld");じゃ駄目なの?

208 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 23:52:57 ]
それぞれのsystem呼出は、細切れになるから
1度のsystem呼出で済ませるようにしろ
絶対パスで指定するとか、バッチファイルを作ってそれをsystemで呼ぶとか

209 名前:178 mailto:sage [2007/06/07(木) 23:56:35 ]
一回ごとに細切れなんですか・・・。結構面倒ですねw
とりあえずsystem("java c:\\java\\HelloWorld");で実行してみたのですが、やはり
Exception in thread "main" java.lang.NoClassDefFoundError: c:\java\HelloWorld
と出てしまいます。う〜ん・・・

210 名前:178 mailto:sage [2007/06/08(金) 00:06:01 ]
system("javac c:\\java\\HelloWorld.java");
は普通に実行できてるっぽいです。javaコマンドだけ何で出来ないのかな;;



211 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:12:18 ]
カレントに存在する必要があるのかな?
それとも区切り文字か。
ってことで、system("cd c:\\java; java HelloWord")とsystem("java c:/java/HelloWordl")を試して味噌。

212 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:21:01 ]
先にコマンドプロントにjava c:\java\HelloWorldに打ち込んでみれば?

213 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:35:51 ]
>>212
普通はそれを最初にやるわな

214 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 10:47:42 ]
C++の参照は、中身はポインタと同じで、参照先のアドレスがメモリに記憶されてるんですか?
(関数内で参照をいくつか用いると、それだけスタック使うことになりますか?)

215 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 10:55:06 ]
>(関数内で参照をいくつか用いると、それだけスタック使うことになりますか?)
質問の意図が読めんが…

関数の引数で
値渡しした場合には 値が持つ大きさ だけスタックに詰まれる
参照渡しした場合には ポインタが持つ大きさ だけスタックに詰まれる

216 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 11:34:37 ]
>>214
通常変数がスタックを消費する保証はない。
まして、参照変数がスタックを消費するかどうかはコンパイラ次第。

217 名前:178 mailto:sage [2007/06/08(金) 12:13:26 ]
>>212
おぉ・・・出来ませんでした・・・。何でだろう・・・。
javaコマンドはそのカレントディレクトリにあるファイルに対してしか実行できないとか・・・?

218 名前:178 mailto:sage [2007/06/08(金) 12:19:35 ]
>>211
system("cd c:\\java; java HelloWorld");
だと、指定されたパスが見つかりませんと出ます。
system("java c:/java/HelloWordl");
だと、Exception in thread "main" java.lang.NoClassDefFoundError: c:/java/HelloWorld
う〜ん・・・

219 名前:178 mailto:sage [2007/06/08(金) 12:23:46 ]
system("copy c:\\java\\HelloWorld.class c:\\java\\HelloWorld2.class");
などは正常に動作するようです。やはりjavaコマンドの仕様なのでしょうか・・・;;

220 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:32:11 ]
javaの仕様がわかってないな。
まあカレントディレクトリの移動などは、SetCurrentDirectory() 使えばいい



221 名前:178 mailto:sage [2007/06/08(金) 12:44:54 ]
>>220
ありがとうございます。どうやら僕の勉強不足のようですね。しかし、
SetCurrentDirectory((LPCWSTR)"c:\\JAVA");
としても、カレントディレクトリが変わったような動作はしないのですが・・・。
その後dirコマンドを打ったら、やはりプロジェクトのディレクトリが表示されます。

222 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:48:21 ]
まさかとは思うが、Dドライブで作業してたりして。

223 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:49:32 ]
>SetCurrentDirectory((LPCWSTR)"c:\\JAVA");

SetCurrentDirectory(L"c:\\JAVA");
じゃ…

224 名前:178 mailto:sage [2007/06/08(金) 12:53:25 ]
解決する事が出来ました。
とりあえずプロジェクトのプロパティの文字設定をUnicodeから設定なしに変更しました。
その後、SetCurrentDirectory((LPCWSTR)"c:\\JAVA");をSetCurrentDirectory("c:\\JAVA");
に変更し、system("dir")をしたところ、JAVAディレクトリが表示されました。
それを確かめた上で、system("java HelloWorld");を行ったら無事実行する事が出来ました。
原因がよく理解出来ないのですが、とりあえず動作できたのでいいのかな・・・。
ありがとうございました。

225 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 13:32:56 ]
SetCurrentDirectory(_T("c:\\JAVA")) なら、unicodeでも設定無しでも動くよ
エラーが出るからってとりあえずキャストすんのはやめとけ

226 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 13:42:37 ]
あともう一つ。
system("java c:/java/HelloWordl");
これだけど、
system("java -classpath c:/java HelloWordl");

これなら動くんじゃないか?
HelloWordl の綴りが気になるが

227 名前:178 mailto:sage [2007/06/08(金) 13:54:53 ]
>>225
丁寧にありがとうございます。キャストはあまりしないほうがいいみたいですね。
現在はchar型の変数にパスを入れて、SetCurrentDirectory(dirPass);のようにしているのですが、
やはりそれだと動作が微妙です。引数はcharじゃなくてLPCTSTR(?)じゃないといけないのかな
とか思いつつ奮闘しています。

>>226
一応-classpath(-cp)も使って実行してみたのですが、確か出来なかったです。
HelloWorldの綴りが>>211で間違ってるのにも実は気付いていて、ちゃんと綴りを直して実行しました。

228 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 13:56:31 ]
>>227
classpath の指定と HelloWordl の間にはスペースがあるんだけどわかってる?

229 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:00:32 ]
日本にもう一人いるのか、本人なのか。

www.google.co.jp/search?q=hellowordl&lr=lang_ja


230 名前:178 mailto:sage [2007/06/08(金) 14:04:28 ]
>>228
あ、大丈夫です。ちゃんと半角スペース入れています。

あと、どうやら>>227のSetCurrentDirectory()は引数の型とかの問題じゃなかったです。
むしろ何も問題は起きてませんでした・・・(´・ω・`)
どうやらstrncat(dirPass, &argv[0][0], point);を実行した後にsystemコマンドが使えないです。
system("dir");を実行しただけでエラーが・・・。



231 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:10:49 ]
>>230
ちゃんとコピペしてやってみたのかよ
そもそも、これがおかしいんだよ→ c:/java/HelloWordl
ここはファイルを指定するんじゃなくてクラス名を指定するの
パス名がクラスの階層を表してはいるけどな

>system("dir");を実行しただけでエラーが・・・。
ふーん

232 名前:178 mailto:sage [2007/06/08(金) 14:18:29 ]
>>231
ちゃんとコピペしてやりました。HelloWorldがクラス名なのも理解しています。

233 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:32:47 ]
わかった。もうキミには言うことは無い
うちでは動いてるけど、君のトコでは動かないんだね

234 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:44:31 ]
>>230
どこか壊してるんでしょう。
dirPassはちゃんと文字列を置ける所を指してる?
(argv[0]って自分の名前なんだけど、それで何するんだろ?)

235 名前:178 mailto:sage [2007/06/08(金) 15:16:42 ]
>>233
そういう次元でもないような・・・。

>>234
dirPassをprintfで表示させたらちゃんと目的のものを表示してくれました。
とりあえず手法を変えて、argv[0][point]に\0を入れてstrcpyしてみたらsystem("dir")が正常に動作しました。
一体何だったのでしょう・・・。argv[0]は最終的にはargv[1]に置換する予定ですw


236 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:18:42 ]
>>233の皮肉に気づけよ

237 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:19:58 ]
なんかさ、やろうとしてることがショートカット作る程度でできそうな事な感じなんだが
複数コマンドだとしてもバッチファイルで済むレベルの内容じゃないのか?
無理矢理Cで作ろうとするほうが疑問なんだが・・・


238 名前:178 mailto:sage [2007/06/08(金) 15:30:47 ]
>>236
ヤバイ・・・全然皮肉が伝わってなかったらしいです;;
言われても気付けない俺はバカかもしれない・・・
まぁ、逆に考えれば幸せな人なのかもしれないから良いか(`・ω・´)ふふふ

>>237
やろうとしていることは、D&Dで.javaを渡したらコンパイル、.classを渡したらそれを実行するプログラムです。
もしかしたらもっと簡単で楽な方法があるんですかね・・・。バッチファイルとか分からないので後でググッておきます。
JAVAを昨日から勉強しようと思ったのですが、いちいちコマンドプロンプトでディレクトリ移動したり
javaコマンド打ったりするのが面倒だと思って・・・。↑押せば前のコマンドは出てきますけど、それさえも面倒で・・・。
というか、コマンドプロンプトでコマンド打つのが嫌いなんです;;
そして、今大体プログラムは完成したっぽいです。

239 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:32:32 ]
strncpy()は鬼門。積極的に使う理由がないなら、sprintf()を使え。

240 名前:デフォルトの名無しさん [2007/06/08(金) 17:32:11 ]
したのようなプログラムで、今調べている位置を出力するにはどうしたら良いですか?
printf("%d\n", Fd)としたら値が変化しません・・・


struct ffblk Fd;
findfirst("*", &Fd, 55);
do {
printf("%s\n", Fd.ff_name);
}
while(!findnext(&Fd));



241 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:45:49 ]
>>240
何も分からない

242 名前:デフォルトの名無しさん [2007/06/08(金) 17:48:57 ]
>>241
再帰を使わずにディレクトリ内のファイルを出力したいのですが
ディレクトリを進めたときに上ディレクトリで何処まで読んだかを記録しておきたいんです

243 名前:デフォルトの名無しさん [2007/06/08(金) 17:50:47 ]
A_dir
B_dir
C_dir
というディレクトリがあったとき、B_dirを調べ終わったとき
次にC_dirを検索するにはどのデータを保存しておけば良いんですか??


244 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:59:58 ]
>>243
関数を再帰的に書けば良いじゃん

245 名前:デフォルトの名無しさん [2007/06/08(金) 18:05:38 ]
>>244
再帰を使いたくないんです・・・

246 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:07:08 ]
何故?

247 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:09:33 ]
Fdを保存しておけばいい

248 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:10:05 ]
末尾再帰型で書いてからループ化すれば?
ttp://ja.wikipedia.org/wiki/%E6%9C%AB%E5%B0%BE%E5%86%8D%E5%B8%B0

249 名前:デフォルトの名無しさん [2007/06/08(金) 18:13:57 ]
>>246 再帰は不安定になるんですよ

>>247 struct ffblk Fd , Fe; としてFe = Fdと記録してみましたがた゛めでした

250 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:19:05 ]
struct ffblk[MAX_DIR_DEPTH];



251 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:19:21 ]
再帰が不安定とは……

252 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:21:44 ]
普通にスタックに積めばいいじゃん。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef