- 1 名前:デフォルトの名無しさん [2008/04/29(火) 09:44:57 ]
- 言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 26 pc11.2ch.net/test/read.cgi/tech/1206196600/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 105代目 pc11.2ch.net/test/read.cgi/tech/1208268461/
- 263 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:11:47 ]
- 最後の要素のcolかlineに特別な値を割り当てておくしかないだろう
- 264 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:14:33 ]
- >>262
できない。 infoが配列の要素を指している以上、 その値は必ず配列上に存在する要素へのポインタにしかなりえない。
- 265 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:16:02 ]
- あとはline_cntを公開しておくしかないな
こーゆーことやるならC++のほうが圧倒的に楽だけどね…
- 266 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:18:13 ]
- >262
文字列の最後を\0で検出できるのは、\0が文字型の特殊な値だから。 同じように任意の型の配列の末尾を検出したいなら、特殊な値を割り当てて検出する以外にない。
- 267 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:22:50 ]
- どうしてもやりたいなら、 match_infoの配列ではなく、
match_infoのポインタの配列を使う。 match_info **info; info=(match_info **)malloc((line_cnt+1) * (sizeof(match_info *))); for(i=0;i<line_cnt;i++) info[i]=(match_info *)malloc(sizeof(match_info)); info[line_cnt]=NULL; こうすれば出来るけど、当然一個一個freeする手間がかかる。
- 268 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:24:02 ]
- >>262
argv[argc]は'\0'ではなくNULLな。 これはargvがポインタの配列だから実現できる。 infoはmatch_info型の配列だから、 末尾要素をNULLにしようとしても型が違う。
- 269 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:28:56 ]
- >>256
それはもしかするとこう? match_info** info; // ← match_info の配列ですね? { info = (match_info**)malloc(line_cnt+1)*szeof(match_info)); int i; for(i = 0; i < line_cnt + 1; i++) info[i] = NULL+ // ...
- 270 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:30:16 ]
- >>267
ががん。かぶってしもた・・
- 271 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:33:43 ]
- 構造体の中身を公開したくないのに構造体の内容で判定することはできない。
公開するか、ポインタの配列で実現するかの二択。
|

|