トップページ⇒tech
1001コメント240KB

C言語の質問スレッド<42>

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C言語に関する質問はここでしてください。

問題をちゃんと切り分けて、Cの話かそうでないか洗ってから質問してくれ。
というより、聞く前に一応 Web で検索しろ。
コンパイラを探してるなら >>2 を見ろ。
過去ログ(DAT落ちあり)なら>>3-100あたりにあるかも。

GUIとか、C標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
ソース丸投げ、宿題、書籍 は専門の別スレがあるからそこへ逝ってくれ。

未定義・処理系依存ネタはご遠慮ください。
誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
規格オタクはこのスレッドには必要ありません。論争したかったら独自にスレッドを立ててそこでやってください。


C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/


前スレ <41>
http://pc3.2ch.net/test/read.cgi/tech/1036876790/
0348デフォルトの名無しさんNGNG
>>346
わかりにくい。
実際におまいが間違えてる(w
0349デフォルトの名無しさんNGNG
>>345
え、EOFだとNULLが返るだろ?
(つか、それ以外にEOFの判別はできないはずだが)
0350252NGNG
結局 32 が何をしたかったのかわからなかった…
0351デフォルトの名無しさんNGNG
g_mallocの一部

p = (gpointer) malloc (size);
if (!p)
g_error ("could not allocate %ld bytes", size);

ちゃんとメッセージは返すらしい。

0352デフォルトの名無しさんNGNG
NULL = FALSE = '\0' = 0
故に
p=malloc(size)
if(!p) = if(p == FALSE) = if(p == '\0')
0353デフォルトの名無しさんNGNG
>>348
ははあ。
そんな我慢していやいや使うくらいなら
はじめからC使うなよ(w
0354デフォルトの名無しさんNGNG
>>353
間違っているのは確かだろ(笑)
0355デフォルトの名無しさんNGNG
>>353
便利だと思ってるし、好きだよ。
でも if まですることはない。
0356デフォルトの名無しさんNGNG
>>352
いや、まあ、それはそうだが。
だから何?
0357デフォルトの名無しさんNGNG
>>353
わかりにくいから細心の注意を払ってコーディングしなければ
おまいのような誤ちを犯すことになる
0358デフォルトの名無しさんNGNG
>>355
矛盾しまくってるジャン(w
0359デフォルトの名無しさんNGNG
>>345
だ〜か〜ら、もうネタはいいって言ってるだろうが!
0360デフォルトの名無しさんNGNG
>>356
オイオイ、FAQ嫁。
0361デフォルトの名無しさんNGNG
>>359
は?なんでオレなの?もしかしておまいも
if (fgets(...) != NULL)
とかしてんじゃねーだろーな?(w
0362デフォルトの名無しさんNGNG
>>357
意味不明
結局「しぶしぶ使う」わけ?
じゃあやめれば?
0363デフォルトの名無しさんNGNG
シンプル伊豆ベスト。

シンプルとは一行で書くことじゃない。
0364デフォルトの名無しさんNGNG
>>347は放置・・・問題外ってことか。
素直に
fprintf(stderr,"エラー\n");
return 1;
としよう。
0365デフォルトの名無しさんNGNG
>>361
貴方はどうするんでつか?
0366デフォルトの名無しさんNGNG
>>362
は?おまいは自分でわかりにくくないと主張しておきながら
間違えたんだろ?何?負け惜しみか?
0367デフォルトの名無しさんNGNG
>>365
if(fgets(...))でいいだろ。
0368デフォルトの名無しさんNGNG
>>365
if (fgets(...))
0369デフォルトの名無しさんNGNG
>>366
おまいは自分で分りにくいと主張しておきながら
whileでは使うんだろ?
まるきり矛盾じゃないか。
0370デフォルトの名無しさんNGNG
>>360
読みましたが何か?
0371デフォルトの名無しさんNGNG
>>369
わかりにくいから出来るだけ分けて書くようにする
それ以上のことは言ってないが?
0372デフォルトの名無しさんNGNG
>>371
ああ、しぶしぶ使うってことね。
了解。
0373デフォルトの名無しさんNGNG
>>369
便利だから・・・
0374デフォルトの名無しさんNGNG
以上、32以外は全部俺の書き込みですた。
0375デフォルトの名無しさんNGNG
>>367-368
冗談だろ(w

0376デフォルトの名無しさんNGNG
NULLやFALSEって0と見なしていいんですか?
0377デフォルトの名無しさんNGNG
>>375
ネタか?もう寝ろや
0378デフォルトの名無しさんNGNG
>>375
冗談じゃないが・・・
while(fgets(...))、for(...;fgets(...);...)もよく書く。
普通しないのか!?
0379デフォルトの名無しさんNGNG
>>373
便利だから使うっていうのは矛盾であることを否定したことにはならないのだが。
0380デフォルトの名無しさんNGNG
>>376
内部表現が0であるわけでも、値が等しいわけでもないが、
整数の0とポインタを比較するときは0はnull pointerとみなされる。
また、ifやwhileの条件ではnull pointerは偽となる。
0381デフォルトの名無しさんNGNG
>>376
だからFAQ嫁って。
0382デフォルトの名無しさんNGNG
ごめん、いままで#42の板が無いもんだとばかり思って新スレ立てかけたよ。
センスの無いスレ名だな。
0383デフォルトの名無しさんNGNG
>>367-368
ワラタ
おまえらちょっと何行かコード書いてみろよ。
fp,buf使ってファイル読み込んで内容を表示するコードをさ。
0384デフォルトの名無しさんNGNG
ifのやつは出すでしょう。
0385デフォルトの名無しさんNGNG
>>383
while ( fgets(buf, BUFLEN, fp) ) printf( "%s", buf );
0386デフォルトの名無しさんNGNG
ifやwhileの条件で「0以外は偽」「null pointer以外は偽」を
利用するのは、分りやすいとはいえない。
条件には、
・真偽値として使う変数
・比較演算子の結果
のみを使うのが分りやすい。
while (i--) なんてのは最低だ。
0387デフォルトの名無しさんNGNG
>>385
スッキリ見やすいですね。
0388デフォルトの名無しさんNGNG
for (i=BUFLEN; --i; )
0389デフォルトの名無しさんNGNG
>>386
>>ifやwhileの条件で「0以外は偽」「null pointer以外は偽」を
マジ頭大丈夫か?
0390デフォルトの名無しさんNGNG
真だろ。
0391デフォルトの名無しさんNGNG
>>386
おおむね賛成だが、論理式としては
・真偽値を返す関数
・!論理式
もありだろー。
0392デフォルトの名無しさんNGNG
>>389
うん。まちがえた。
0393デフォルトの名無しさんNGNG
>>381
何かあったらすぐFAQ読めって、お前はFAQの回し者か?
0394デフォルトの名無しさんNGNG
>>while (i--) なんてのは最低だ。
それをぱっと見て、例え仕様を知らなくても、なにが脱出条件なのか
すぐに見当がつかないような「あほ」がPGなんかやってるか?
0395デフォルトの名無しさんNGNG
>>385
うわ。()の内側に空白あけてることからも分る通り、
あまりにもDQNなコード...
0396デフォルトの名無しさんNGNG
while (fgets(buf, BUFLEN, fp)) printf("%s", buf);
0397デフォルトの名無しさんNGNG
>>394
わかりやすさの話をしてるんだが。
0398デフォルトの名無しさんNGNG
>>395
うわ。括弧を全角で書いていることからも分かる通り、
あまりにもDQNな奴...
0399デフォルトの名無しさんNGNG
>>397
十分わかりやすいぞ
0400デフォルトの名無しさんNGNG
>>394
自分で分かりにくいと思っているからそういうコメントになるわけだが。
やっぱり「なにが脱出条件なのか すぐに見当がつかないような」コードなんだね。
0401デフォルトの名無しさんNGNG
>>397
だから、それを「わかりにくい」と思うような人間が
PGなんかやってるのかよ・・・世も末だなオイ・・・
0402デフォルトの名無しさんNGNG
fgetsは「真か偽を返す関数」だよね?
0403デフォルトの名無しさんNGNG
>>395
ダメか?見易いと思うんだが。
てか Gtk+ のソース読んでたことあるから
染み付いちゃったんだよね
0404デフォルトの名無しさんNGNG
if (fgets(...))
がわかりやすいなら、同じ理屈で
if (!(fp = fopen(...)))
も分りやすいことになるね。
0405デフォルトの名無しさんNGNG
>>402
ポインタです。
0406デフォルトの名無しさんNGNG
>>405
ポインタも「真」または「偽」だよね?
0407デフォルトの名無しさんNGNG
fp = fopen(...);
if (!fp)
のほうがいい。
0408デフォルトの名無しさんNGNG
>>404
当然だ。
どっちもわかりやすい。
0409デフォルトの名無しさんNGNG
>>404
だからそれは2行に分けれるだろーが
頭悪過ぎ
0410デフォルトの名無しさんNGNG
>>407
きみは
result = fgets(...)
if (result)
と書くのかね。
0411デフォルトの名無しさんNGNG
>>410
ぜったいこいつアホだ
0412デフォルトの名無しさんNGNG
>>409
>>410 のように分けれるよ。
0413デフォルトの名無しさんNGNG
>>410
わざわざ変数をつかうことはない。
0414デフォルトの名無しさんNGNG
おい、おまえら。コーディングスタイルについて論争する糞スレは他にあるだろう。
わざわざここでするなよ。
0415デフォルトの名無しさんNGNG
>>409
矛盾が明らかになりました(激藁
0416デフォルトの名無しさんNGNG
>>414
>>1がむかつくからさっさと終了したいんです。
0417デフォルトの名無しさんNGNG
>>413
分りやすくなるなら、それくらいやるべきだろ。
もー矛盾しまくり。
0418デフォルトの名無しさんNGNG
さっきから屁理屈こねてるだけじゃん?何こいつら
二人いるみたいだが
0419デフォルトの名無しさんNGNG
>>418
あんたは何人いるの?
0420デフォルトの名無しさんNGNG
if(!(fp=fopen(...)))は括弧が多くてみづらいってことじゃないの?
0421デフォルトの名無しさんNGNG
>>420
そんな頭悪いレベルの話なの?
0422デフォルトの名無しさんNGNG
>>417
じゃおまいはこう書け
if (!(len = strlen(str), buf = (char *)malloc(len+1)))
0423デフォルトの名無しさんNGNG
たいてい負けると「屁理屈だ」とか捨てゼリフが出てくるな(w
0424デフォルトの名無しさんNGNG
>>422
ワラタ
0425デフォルトの名無しさんNGNG
buf = (char *)malloc(strlen(str)+1);
if (!buf)
0426デフォルトの名無しさんNGNG
>>421
頭が悪いのはお前。
0427デフォルトの名無しさんNGNG
>>422
頭わるっ!
俺は「何でも一緒にしたい」んじゃないの。
「代入と、その値の利用をいっしょにしても良い」と言ってるの。
strlenをifにいれる意味がどこにあるんだよタワケ(藁
0428デフォルトの名無しさんNGNG
>>423
すでに>>421が捨てゼリフを吐いています(w
0429デフォルトの名無しさんNGNG
>>427
if ではやらない方が分かりやすくない?
0430デフォルトの名無しさんNGNG
>>416
ならオッケー。
0431デフォルトの名無しさんNGNG
>>429
でもfgetsだって代入だよ?
0432デフォルトの名無しさんNGNG
代入と、その値の利用をいっしょにするのキモイ
0433デフォルトの名無しさんNGNG
>>427
わりぃ。じゃこうだな
if(!(buf = (char *)malloc((len = strlen(str))+1))
0434デフォルトの名無しさんNGNG
>>432
while ((c = getchar()) != EOF)
もなしか?
0435デフォルトの名無しさんNGNG
>>432
でもfgetsだって代入だよ?

0436デフォルトの名無しさんNGNG
このスレを終わらせたいだけならいいけど本当に熱くなってる奴は↓行ってくれな。

宗教戦争
http://pc3.2ch.net/test/read.cgi/tech/1031355713/
0437デフォルトの名無しさんNGNG
>>433
そのlenを何に使うんだ?
0438デフォルトの名無しさんNGNG
>>433
いやstrdup使うけど(w
0439デフォルトの名無しさんNGNG
>>437
memcpy()
0440デフォルトの名無しさんNGNG
for (i=0; i < len; i++)
0441デフォルトの名無しさんNGNG
…たしかにfgetsも代入だな。
俺の負けだ! もう寝る!
0442デフォルトの名無しさんNGNG
それこそstrcpyを使った方がわかりやすいんじゃ・・・
0443デフォルトの名無しさんNGNG
>>434
そうやっていつも極論を出す。
やる必要があるときとやらなくてもいい時を分けて考えろ。
0444デフォルトの名無しさんNGNG
>>442
スピード命
0445デフォルトの名無しさんNGNG
>>444
解散した。
0446デフォルトの名無しさんNGNG
ヒトエちゃんてどこ行ったんだろうな
0447デフォルトの名無しさんNGNG
gtk+触ってたって人、まだいる?
gtk_signal_connect(GTK_OBJECT(some_widget), "some_event",
(GtkSignalFunc)callback, (gpointer)data);

この糞長い関数を一行(80列)で書くエレガントな方法ってあるかい?
あったら烈しく教えて欲しいんだが。
■ このスレッドは過去ログ倉庫に格納されています