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


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

C言語なら俺に聞け(入門篇) Part 38



1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 20:15:31 ]
C言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
  C/C++の宿題を片付けます 117代目
  pc11.2ch.net/test/read.cgi/tech/1225320579/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
  C言語なら俺に聞け(入門篇) Part 37
  pc11.2ch.net/test/read.cgi/tech/1224000127/
過去スレ
  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

237 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:04:03 ]
>>228
"%d,%d,%d,%d"と書いたら、それは1,2,3,4と入力させることを意味する
1234と入力するのなら>>207のようにすること

238 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:21:31 ]
fgetsじゃなくてgetsでいいよ
どうせ両関数の仕様すら理解していないんだろ

239 名前:203 mailto:sage [2008/11/03(月) 18:26:55 ]
スレ汚しすいませんでした。


>>207の方法で1から作り直します。

皆さんご回答本当にありがとうございます。

240 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 19:38:12 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7932.txt
画面内の球をクリックすると初速度v0で鉛直投げ上げするプログラムです
空中にある状態の球をクリックするとまたその位置から投げ上げされて
球をクリックするたびにどんどん球が上がるようにしたいんですが、
空中の球をクリックしても何も起こしません。
ボールが跳んでるときに、最初にボールがあった場所をクリックするとおかしなことに。

241 名前:デフォルトの名無しさん [2008/11/03(月) 19:43:31 ]
あっそう

242 名前:240 mailto:sage [2008/11/03(月) 20:22:33 ]
どこが間違ってますかね?

243 名前:受付番号001 mailto:sage [2008/11/03(月) 20:25:58 ]
>>242
いま診てやるから待ってろ

244 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:34:54 ]
たぶんここだな

if(bally+ball >= 500){
KillTimer(hWnd,ID_MYTIMER);
bTimer = FALSE;
mytime = 0;
}

245 名前:質問 [2008/11/03(月) 20:55:23 ]
ファイルの直ぐ下に任意のファイルの内容を
そのままコピー、連結できる関数ありますか?お願いしますm(__)m



246 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:58:55 ]
>>245
ないです。

247 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:00:06 ]
自分でアペンドモードで開いてコピーしる

248 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:00:38 ]
下はどっちだ?

249 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:02:24 ]
>>245
C/C++の宿題を片付けます 117代目
pc11.2ch.net/test/read.cgi/tech/1225320579/

250 名前:245 [2008/11/03(月) 21:02:52 ]
ということはファイルの内容を読み込んで
fopenのaで逐一書き込んでいくのが最良の方法ですね?

251 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:03:23 ]
system

252 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:06:56 ]
読み込みながらの方が良いだろう。
char buf[4096];
f = fopen(path, "r");
g = fopen(paht, "a");
while (c = fread(buf, 1, sizeof buf, f))
fwrite(buf, 1, c, g)


253 名前:245 mailto:sage [2008/11/03(月) 21:12:33 ]
ありがとうございましたm(__)m

254 名前:240 mailto:sage [2008/11/03(月) 21:18:46 ]
>>244
問題ないような気が・・?すみません分からないです

255 名前:受付番号001 mailto:sage [2008/11/03(月) 22:24:32 ]
>>254
診ましたよ〜。

えーと、これはですね、、、もう手遅れです。                   (←うそ)

問題点はボールのY座標の扱いですね。 WndProc内の変数ballyで保持しているY座標と
WM_TIMERメッセージ内で一時的に計算しているY座標とが一致していません。
ballyはウィンドウメッセージを受けるたびに480に初期化されていますので、上に飛んでいる
ボールをクリックしても反応しなく、地面をクリックすると反応してしまうのです。
ballyはWM_CREATメッセージ内だけで初期化しましょう。

また、WM_TIMERメッセージ内では常に地面からの座標計算でボールの高さを計算して
しまっているので、上手くボールにヒットしたらballyの位置から計算しなおす様に変更する
必要があります。



256 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:25:18 ]
>>245
COPYやcatで連結は駄目なの?

257 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:35:13 ]


ソースを読むって言うのはさ

自分とソースを一体化させる作業なんだ


「俺は今どうなっているのか」と考えながら読むんだ

無意識にみんなやってると思うぜ
他の何かがどうなってるかではない、自分がどうなってるか




258 名前:質問 [2008/11/03(月) 23:27:00 ]
下記の違いを教えていただけますでしょうか?
return
exit
あ、あと
EXIT_FAILUER
ってなんですか?

259 名前:デフォルトの名無しさん [2008/11/03(月) 23:28:00 ]
FAILUARE

260 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:28:50 ]
こういう人にはgoogleの使い方を教えたほうが親切なんでしょうか?

261 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:29:38 ]
return は予約語
exit はライブラリ関数
EXIT_FAILURE はマクロ定数
です。

262 名前:デフォルトの名無しさん [2008/11/03(月) 23:40:04 ]
return は関数から抜ける
exit はプロセスから抜ける
EXIT_FAILUER は書いた者に聞け(煽り口調で)

263 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:41:28 ]
EXIT_FAILURE はマクロ定数の意味が分りません

264 名前:240 mailto:sage [2008/11/03(月) 23:44:28 ]
>>255
うまくいきました!  
大変わかりやすい説明ありがとうございます!


265 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:51:02 ]
>>257
空気を読むって言うのはさ
自分と空気を一体化させる作業なんだ
「俺は今どうなっているのか」と考えながら読むんだ
無意識にみんなやってると思うぜ
他の何かがどうなってるかではない、自分がどうなってるか

しかし、鏡を見ると、場に合わない容姿・・・



266 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:02:17 ]
int main (void){
int i;
int vx[5];
for(i=0;i<5;i++){
printf("vx[%d]:",i);
scanf("%d", &vx[i]);
}
putchar('\n');
for(i=0;i<5;i++){
printf("vx[%d]=%d\n",i,vx[i]);
}
return (0);


上記の配列の要素を読み込んで表示のプログラムを実行したところ
1
2
3
4
5
vx[0]:vx[1]:vx[2]:vx[3]:vx[4]:
vx[0]=1
vx[1]=2
vx[2]=3
vx[3]=4
vx[4]=5
と変な形になってしまい、試行錯誤したところどうやら実行の際に
ファイル名 | more
としていたのが原因のようでした。 moreはその前に書いてたプログラムの際に利用していてそのままでした。

moreは単に一画面ずつ表示するようにするだけなのになぜこのようなことが起きたのでしょうか?


267 名前:受付番号001 mailto:sage [2008/11/04(火) 00:06:58 ]
>>264
乙! 面白いトレーニングプログラムだねw
わしもSetTimer、KillTimer、WM_TIMERメッセージは、テトリスを作ってみた時に使ったよ。
同じように素のWindows SDKとC言語だけでね。

>>265
大人になれば空気なんて読まなくなる。いや読む必要がなくなるのだ。
その代わり、盤面の様子や流れ、相手のニーズや考えを読むように変化する。

268 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:30:14 ]
自分がmainになるんだよ
mainになって、forなどで値の計算や操作をやっていると考えると
どこがおかしいのか分かりやすい

元々俺がアセンブラ屋だったから
自分に置き換えて「イメージ」する癖がついた

っていうか、みんなイメージしてると思うが!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

269 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:35:49 ]
>>266
printf() の後に fflush(stdout); をおいてみるとどうなりますか?fflush(NULL); ではどうなりますか?

270 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:36:28 ]
>>268
新しい芸ですか?

271 名前:デフォルトの名無しさん [2008/11/04(火) 00:36:54 ]
みなさん、Cのソースを組むとき、分かりやすく汎用的に組む為に、具体的にどういうことに気を付けてますか?
たとえば、、、
僕の場合なんですが、
・一行は80文字。
・strcpyよりmemcpy
・独自関数ライブラリのプロトタイプは必ず書く。
・関数の引数が多くなりすぎる時は構造対で渡す。
・関数名はキャメル式に統一。
・入れこは3つ以上にしない。
・繰り返し文は使い分ける。
・構造化プログラミング。mainは目次みたいな感じで、全体が把握でくるような作りに。
・C言語についてのコメントは書かない。
・インクルードヘッダはは使用するものだけ書く。(まとめたりしない)
まだあると思うけど、とりあえずこれくらいかな〜

みんなのも教えてください。

272 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:39:26 ]
>>271
> ・strcpyよりmemcpy
状況にもよりますが、これは賛同しかねます。

273 名前:デフォルトの名無しさん [2008/11/04(火) 00:45:27 ]
>>272
あ、すいません。
そうですね。\0つけたい時ありますもんね。
strcpy→strncpyに訂正します。


274 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:50:17 ]
>>271
入れ子2つだけじゃ厳しいなぁ

275 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:52:42 ]
memcpy()でコピーしてるのに、コピーの長さをstrlen()で取ってるコードをこのまえ見たな。
strcpy()でいいじゃんって思うけど。



276 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:53:10 ]
>>271
>一行は80文字。
まあほとんどないことですが、意味の上で 80文字を超えるようであれば、それはそれでこだわりません。

>プロトタイプは必ず書く
前方参照をほとんど行わないので、特に必要性を感じません。

>入れこは3つ以上にしない。
それはそうなんですが、まあ、ええ、ときどき、しばしばやってしまいます。

>キャメル式
初耳です。よろしければ意味を教えてください。

277 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:56:34 ]
>・一行は80文字。
これは無い

278 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:57:33 ]
>>276
ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9

279 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:59:40 ]
>>277
そういうスタイルの人もいるよ。
Cだと80くらいでも十分書けるし。

280 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:04:14 ]
いや居るのは知ってるよ

281 名前:デフォルトの名無しさん [2008/11/04(火) 01:06:24 ]
>>276
動的独自ライブラリから独自関数を使う場合、引数間違っててもコンパイルが通る。んで、実行時にコア吐いて初めて気付く事がある。プロトタイプ書いてると、コンパイルエラーでるから、書くようにしてる。好みかな。
キャメル式は、確か、ラクダみたいな意味だったかな。大文字と小文字だけでつけるやつ。こういうの。
FileCopy()
区切り方の違いかな。変数はアンダーバー使うし、マクロは大文字とか。



282 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:06:58 ]
ああそう。

283 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:08:54 ]
うん

284 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:08:55 ]
>>281
下位のサブルーチンから書いていって、main()を最後に書くってスタイルの人なんじゃないの?

285 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:09:11 ]
コーディング規約のスレがあったような

ここでもいいんですよ、はい



286 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:10:53 ]
>>281
ん、了解。たしかに分割コンパイルですすめるときは .h にプロトタイプをまとめる、というのは日常的にしますね。読みが浅かったです。

>>278 >>281
キャメル式+ハンガリアンでかいてみることもあります。気分しだいですが。

287 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:16:37 ]
>>284
昔はそういう人も居たし俺もそうだった。技巧賞ノミネート作品のように。
でもある時から改めた。

288 名前:デフォルトの名無しさん [2008/11/04(火) 01:18:18 ]
>>275>>273を読んでないのか

289 名前:デフォルトの名無しさん [2008/11/04(火) 01:20:25 ]
>>287
技巧賞とあるんだ
ぐぐるわ

290 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:25:01 ]
>>288
別に責めてるわけじゃないから、気にしなくていいよ。

291 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:25:48 ]
>>287
技巧賞っていうか、Pascalの影響も多分にあると思う。

292 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:28:07 ]
>>286 ハンガリアン記法はダメだろ

293 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:30:20 ]
>>287
さしつかえなければ、かえた理由を教えてください。
たしかに私も厳密な意味で下から上にかいているわけではなく、コンパイルOKれべるですので、技巧賞はむりですね。

294 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:32:58 ]
>>292
私のはいわゆる「アプリケーションハンガリアン」ってやつですね。MicroSoft 流 pszXXX とかいうのは私も嫌いで、これはやらないです。
そもそも全部の変数をハンガリアンにするわけではありません。
節操がないといえば、それまでですが。

295 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:36:38 ]
しかしアプリケーションハンガリアンって、あんまり使う機会がないっていうか。
システムハンガリアンはダメだって言われてるけど、Cのときは、ポインタはpをつけてる。



296 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:41:43 ]
>>269
どちらでも実行結果は変わりませんでした。

297 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:52:53 ]
>>296
more の内容をください。more にも fflush(NULL) をいれるとどうなりますか?

298 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:58:06 ]
fflush(stdout); を入れるのは一つ目のprintfですよね?

C:\081103>1 |more fflush(NULL)
ファイル C:\081103\fflush(NULL) にアクセスできません
1
2
3
4
5

となりました。

299 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 02:10:06 ]
>>298
いえいえ、more も自作しているのかな、と思って、 fflush() で more のバッファリングも殺してしまおうと思ったわけで、
コマンドラインで fflush を指定するつもりはありませんでした。

more が標準出力をバッファリングしており、自作のプログラムの出力をその都度画面に出力していないのでは?と思いますが、いかがでしょう。


300 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 02:14:20 ]
ごめんなさい、何言ってるか分かりません・・・
自分の不勉強のようなので出直してきます。

301 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 02:19:23 ]
>>300
いえいえ、そんなつもりはないです。
バッファリングについてかいておきますね。
printf() で出力した時点で、それが画面にそのままでるわけではなくて、いったん別のところにたくわえられており、
ある程度たまった時点で画面に出力される、という仕組みになっているのが普通です。

たとえば、これは画面ではなくてディスクなんですが、printf()などで一文字ずつ書き込む、なんてディスクがカリカリいって
(ハードウェアの操作には時間がかかることは直感的に感じていただけるものと思います。)なんだか非効率だと思いませんか?

なにかわからないことがあれば遠慮なくきいていただいていいと思いますよ。レスポンスがあるかどうかは運まかせかもしれませんが。

302 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 03:00:02 ]
strncpyは仕様が腐ってるので使うのやめとき。


303 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 03:08:05 ]
どう腐ってるの?

304 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 03:09:44 ]
終端文字列の扱いのこといってんだろう多分

305 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 09:28:37 ]
strncpy()を使うくらいなら、spritf()を使いこなすか、いっそ自前で管理した方がいい希ガス。



306 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 13:08:21 ]
つ strncat()

307 名前:デフォルトの名無しさん [2008/11/04(火) 16:12:50 ]
spritf

308 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 16:32:53 ]
>305s/spritf/sprintf/

309 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:24:34 ]
int i,j,k,count;
printf("何段?");
scanf("%d",&count);

for(i = 1;i <= count;i++){
for(j = 1;j <= count-i;j++){
putchar(' ');
}
for(k = 1;k <= i;k++);{
printf("*");
}
putchar('\n');
}


上記のプログラムで右下が直角の三角形が表示されるつもりなのですが

何段?5
----*
---*
--*
-*
*
となってしまいました(半角スペースを-としました)。kがうまくいってないような気がするのですが、ご指摘お願いします。



310 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:35:29 ]
>for(k = 1;k <= i;k++);{
この行に注目。


311 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:44:17 ]
>>310
printf("* %d",k);にしたところ

----*2
---* 3
--* 4
-* 5
* 6

となりました・・・なぜ毎回k=1にならないんだ。

312 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:45:47 ]
>>311
>310
他は見なくていい。

313 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:47:45 ]
>>312
注目したのですがとくにおかしくないような・・・
i回の繰り返し文のはずです。

314 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 18:53:12 ]
やっと気付きました。 for(k = 1;k <= i;k++);←ここですね{
くだらない質問で失礼致しました。ご指摘ありがとうございました。

315 名前:デフォルトの名無しさん [2008/11/05(水) 01:32:51 ]
int k,i,j,n;

printf("何段?");
scanf("%d",&n);

for(k=0;k<=n;k++){

for(i=0;i<(n-k);i++){
printf(" ");
}
for(j=0;j<k;j++){
printf("*");
}
printf("\n");
}

布団入ってから作ったから動くかどうかわからん。



316 名前:デフォルトの名無しさん [2008/11/05(水) 01:42:04 ]
do{

if(){
break;
}
if(){
break;
}

}while(0)

時々みるこれどうなのよ?テクッてて見易いとかいうやつは程がしれてるな

317 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 01:53:25 ]
>>316
while (1) {if()break; if() break;}
とか
for(;;) {if () break; if () break; }
はよくみます。lint にひっかからないように for(;;) {} を使う、ていう意見も。
ループの脱出条件が2つ以上ある、というのであれば、これらのやり方もありだと思います。

318 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 02:18:01 ]
>>317
論点がずれてる

319 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 02:22:47 ]
大文字と小文字を区別しないコンパイラはありませんか?

320 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 02:24:46 ]
そこまで大胆に規格を逸脱した実装は見たことないな。
せいぜいDOS/Windowsでヘッダ名が大文字でも行けるくらいしか知らない。

321 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 02:39:26 ]
>316
どうなのよってお前の感想どおりだ

322 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 03:13:09 ]
>>316
別にテクッてるとは思わないがいいんじゃないの

323 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 08:06:33 ]
>>316
その書き方は嫌いだが goto 禁止なら仕方ないな

324 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:25:39 ]
int main(){
(略)
 printf("test\n");
関数(Dname);
}

void 関数(char *fname){
printf("2\n");
}

というプログラムがあったときに、testが表示されて
2が表示されずにセグメンテーションエラーでるのはどこに原因があると考えられますか?


325 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:27:13 ]
略されたところに魔物が棲んでいると考えられます



326 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:58:22 ]
324ですけど解決しました
関数の中の定義した配列のサイズがおおきすぎたためでした。

327 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 11:33:44 ]
>>316
美しくないとは思ってたんだがそれに近い書き方だ
0じゃなくて条件1個だけど
どう書くべきなの?
条件をいっぱい書くとして抜けるタイミングが異なる場合はどうしたらいい?

328 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 11:37:59 ]
>>316
初心者なのでよくわからないのですが
これはif ・・・・・ else if  ・・・
じゃだめなんですか?

329 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 11:39:58 ]
>>328
それで組んでもさほど代わらないと思うよ。
むしろネストが増えるし

330 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 12:04:32 ]
qsortでIPアドレスをキーにソートしたいんですが、うまくいきません。

IPアドレスとchar型の文字列を要素に持つ構造体のソートをしたいのですが
比較関数内にprintfを置いてみると、どうやら比較関数を数回参照しただけで
デバッガが立ち上がってしまいます。

IPアドレスはCSVから読み込んでいますが、5MB程度のCSVなら問題なく読み込み、ソートまでできます。
全く同じフォーマットの150MBのCSVからIPアドレスを全て読み込んでソートしようとするとデバッガが立ち上がります。

比較関数内の数箇所にprintfを置いてみたところ、比較関数の先頭と最後のprintfはセットで表示されるので、
比較関数内ではデバッガは出ていません。

どうやら割り当てされていないメモリ領域を参照しているみたいなんですけど、qsortをする際に変な領域を参照することとかあるのでしょうか。

331 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 12:08:08 ]


・複数プラットフォームで運用するものでない
・仮に複数プラットフォームがあるとしても、ウチは個別にソースを用意する
・社風なのか、ソースの流用は好まない



なのに、「typedefで調べろよ!んったく何やってんだよもー」

とかグチグチ言い出す不満の塊
お前ストレス解消するために会社来てんのか




332 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 12:55:18 ]
>>330
デバッガってのはデバッグするためのツールなんだけどね・・・
まぁたぶんスタックが足りないんだろう。どーんと増やしてみては?

333 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 13:05:48 ]
>>327
ループ条件が存在するならループで書いたって問題ないだろ

334 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 14:34:11 ]
while(条件式)

if(){

continue;
}
if(){

}

}
1個目のifでcontinueした場合2個目のifはとばされて、whileの頭にもどりますよね?

335 名前:デフォルトの名無しさん [2008/11/05(水) 14:46:20 ]
やってみれ



336 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 14:47:34 ]
なんでその程度の規模のプログラムで聞くかね・・・

さくっとサンプル作って、どういう動きするか
テストしてみればいいじゃん。

337 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 15:02:59 ]
それがゆとり






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

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

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