トップページ⇒tech
909コメント312KB

C言語なら、俺に聞け! <9>

■ このスレッドは過去ログ倉庫に格納されています
0001C言語ハッカー Kusakabe YouichiNGNG
おれは21才、9年間プログラムを一生懸命作ってきた。
あちこちの言語に手を出したが結局極めたのはC言語だけだった。
大体のことなら分かるからオレに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

・前スレ C言語なら、オレに聞け! <8>
http://pc.2ch.net/test/read.cgi/tech/1005811510/l50
0153C初心者NGNG
>>152
いや、この本はその辺はちゃんとしてます。
void main についてもわざわざ欄を設けて説明してありました。
0154デフォルトの名無しさんNGNG
でも、実際問題、あのポインタ表記はどうにかならんものかと思う。
0155C初心者NGNG
>>154
と、言いますと?
0156デフォルトの名無しさんNGNG
>>151
ああ、あれか。K&Rの第五章を焼き直した本ね。

参考文献にK&Rが入っていないCの本は見たことない。
参考文献すら書いてない本は買うに値しない。

ちがう?
0157C初心者NGNG
>>156
そんな、オレを責められても困りますよ。
0158デフォルトの名無しさんNGNG
K&R、本屋で立ち読みした。
3分で吐き気がした。
コンピューターとは話せるが、まともな人間と普通のコミュニケーションが取れないヲタが文章を書くと、ああなるという、良い見本だった。
教育学の教科書にサンプルとして採用しようと思った。
もちろん、ダメな解説例として。

人にわかりやすく物事を教えるには、それなりに「教えるスキル」が必要だ。
カニチャーハンは、その辺がまったくわかっていない。
K&Rは、最後の一冊として読むべきだ。最初に読んではいけないし、勉強の途中で読んでもいけない。
ほとんど全部他の本を読み尽くして、C++に逝く直前に読むと良い。
0159C初心者NGNG
>カニチャーハン
ワロタ!
0160C初心者NGNG
うーん、K&R買わなければ良かったかなあ・・・(鬱
0161デフォルトの名無しさんNGNG
>>160
> うーん、K&R買わなければ良かったかなあ・・・(鬱
買っといて損はない。
K&Rが理解できればCの文法は理解したと思って良い。

あと、K&Rは規格書やマニュアルに近い書き方なので、
慣れていない人が読むと>>158のような感想を持つでしょう。
0162デフォルトの名無しさんNGNG
>>158
K&R はあくまで「Cの入門書」であって「プログラミングの入門書」でも教科書でも
ないからね。

基本的なプログラミング技術が身についていない人間が読むのは、ちょっと辛い。
身近に質問できる先輩とかいれば、どうにかなるけど。
0163C初心者NGNG
>>161
なるほど・・・。
「解説書」ではなくて「規格書」「Cの定義文」みたいに接すれば有用だということですね?
0164仕様書無しさんNGNG
>>158
プログラマー辞めてよし!
0165デフォルトの名無しさんNGNG
つか、日本語版訳が悪いから止めとけってばよ(藁
0166C初心者NGNG
>>165
その話はよく聞きますね。
0167デフォルトの名無しさんNGNG
じゃー漏れがもっとわかりやすく翻訳しなおしてやろうか?
あれって許可いるのか?
0168C初心者NGNG
もちろん原著者の許可が要るでしょう。
0169デフォルトの名無しさんNGNG
ヲイヲイCの文法理解すんのに大袈裟じゃないか?
0170デフォルトの名無しさんNGNG
引用には許可は不要です。翻訳してもOK.
0171デフォルトの名無しさんNGNG
>>170
いや、引用でなくて、丸ごと一冊訳そうとたくらんどるんだけど。
0172デフォルトの名無しさんNGNG
>>171
どっかスレ作って、そこでガンガン訳しちゃうってのはどう?
添削も出来るし。

まーこの際著作権は無視だな、ムシ
0173デフォルトの名無しさんNGNG
親切な人がホームページにまとめてアップしてくれそうだし
なんならオレがその役をかってでてもいい
0174デフォルトの名無しさんNGNG
煽ってるが、捕まるかもw
0175デフォルトの名無しさんNGNG
しかし、あんなクソ訳を放置しておくというのも日本全体の利益にならんな。
役所が金出してくれればいいんだが。
0176デフォルトの名無しさんNGNG
>>151
こきおろしている、というより「時代遅れな記述がある」と言っているんじゃ・・・
俺にはそう読めましたが。
(まあ、たしかにどうでもいいあげあしとりもありますが)
0177MarezoNGNG
>>103
勘違いしていた(^^;
#define RSHIFT(i,n) i<0 ? (signed)!(!(unsigned)i >> n) : i >> n;

確か「!」はnotだったはず。
0178デフォルトの名無しさんNGNG
>>177
つーか負の表現に2の補数を使ってるところなら
>>100で完了してるんだけど、どうよ?
0179デフォルトの名無しさんNGNG
関数をstatic宣言するのとしないのの違いを教えてください。

static void hoge();
void hoge();

returnした時に挙動が変わるようなのですが・・・・
よろしくお願いします。
0180デフォルトの名無しさんNGNG
>179
外部から参照できる(static なし)かできないかの違い(static)
0181デフォルトの名無しさんNGNG
>>179
static にすると同一の翻訳単位 (厳密に言うと #include とかあるからアレなんだが、
基本的には同じ *.c に書いてある範囲)からしか呼び出せない。static にしないと、
外部からでも呼び出せる。

> returnした時に挙動が変わるようなのですが・・・・
それは static 変数と勘違いしてないか?
018282NGNG
どうも右シフトの元質問者です
なんだかお題の書き方が曖昧だったみたいですんません
割算をしたいという趣旨ではなくて、最上位ビット以外をシフトしたい
ということでした。てことでいろいろヒントをいただいた結果こんなん
になりました。

#define MASK ((~(unsigned)0)>>1)
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|(((unsigned)i&MASK)>>n))

簡単にならんかな・・・
0183179NGNG
レスありがとうございます。とても勉強になります。

returnした時の挙動というのは具体的に言うとこういう事です。

static void alarm(int);

int connect(int a, int b)
{
...A
signal(SIGALRM, alarm);
...B
}

alarm(int signo)
{
return;
}

とあった時SIGALRMシグナルが呼び出されてalarm関数に飛んだ後
returnで一気にconnectへ帰って...Bの領域を実行して無いようなのですが・・・

アドバイスよろしくお願いします。
018482NGNG
あれ、だめだな(^^;
018582NGNG
いや、やっぱり正しいか<aho
0186デフォルトの名無しさんNGNG
>>179
OSは
0187デフォルトの名無しさんNGNG
そもそも、signalの使い方を誤解している
0188説明より手を動かした方が理解できるだろNGNG
Unixなの?
まず下記のような2つのファイルを作って
% cc -o main a.c b.c
としろ。エラーが出るだろ。
次にstaticを除いて同じことをしてみろ。エラーが出ないだろ。
外から参照できないってのはつまりこういうこと。

a.c
---
extern void func();
int main() {
func();
}
---

b.c
---
static void func () {
}
---
0189179NGNG
引き続きレスありがとうございます。
static宣言するメリットというのは外から参照できないというのに尽きるのでしょうか?
0190デフォルトの名無しさんNGNG
>>182
#define RSHIFT(i,n) (signed)(((unsigned)i&MASK)|(((unsigned)i)>>n))
これダメかな
(unsigned)→(signed)が処理系依存なんで
厳密にはどうしようもない気もしますが…。
0191179NGNG
ソース見つけました。
http://www4.big.or.jp/~kanai/data/unpv12e/lib/connect_timeo.c

の
connect_alarm(int signo)
{
return; /* just interrupt the connect() */
}
のreturnの役割がわからないです。
これはただ呼び出し元に戻るだけではないのでしょうか?
0192デフォルトの名無しさんNGNG
>>191
んー…。これってさ alarm() でエラーハンドラに飛ぶ仕掛けが
あるから、ダミーのやつ入れて意図的に処理しないように
してるんじゃないかな。全体見てないのでよくわかりませんけどね…。
0193デフォルトの名無しさんNGNG
>>183
それはstaticをつけるかどうかによって挙動が変化してるのか?

>>191
returnに意味はないでしょう。
0194デフォルトの名無しさん NGNG
>>182
負の数を右シフトしたとき、最上位以外の左には、0を詰めたいの?
0195Kusakabe YouichiNGNG
In article >>145, 145 C初心者 wrote:

> K&Rを初めて購入したのですが、この本を使う上での注意点とかありますか?

訳本の場合は「誤植に注意」かな。
不審な箇所があったら原書と見比べよう。
0196Kusakabe YouichiNGNG
In article >>149, 149 C初心者 wrote:
> 他の本でK&Rをケチョンケチョンにこき下ろしてる記述
(K&RはC言語を分かりづらくしている諸悪の根源とか)
> があったりするのですが、実際どうなのでしょうか

デマですね。その本を「わかりやすいいい本だ」と薦められて、
それなのにその本を理解できなかった馬鹿が、
「自分の理解力に問題がある」ことを認めたくないがために、
事実のほうをねじ曲げて「わかりにくい本だ」ということにしようとしたのでしょう。
0197デフォルトの名無しさん NGNG
コイツは、ニセカベですね。いずれにしても無視だが。
0198Kusakabe YouichiNGNG
In article >>153, 153 C初心者 wrote:

> >>152
> いや、この本はその辺はちゃんとしてます。
> void main についてもわざわざ欄を設けて説明してありました。

どう書いてありましたか? :)
0199Kusakabe YouichiNGNG
In article >>158, 158 デフォルトの名無しさん wrote:
> 人にわかりやすく物事を教えるには、それなりに「教えるスキル」が必要だ。

カーニハン氏はその点もうしぶんないですね。
0200Kusakabe YouichiNGNG
In article >>162, 162 デフォルトの名無しさん wrote:

> >>158
> K&R はあくまで「Cの入門書(I�C任△辰董屮廛蹈哀薀潺鵐阿瞭�臀(I�C任盒飢塀颪任發覆い�C蕕諭」

え? よくできた「入門書」だと思いますけどねえ。
0201Kusakabe YouichiNGNG
In article >>163, 163 C初心者 wrote:

> >>161
> なるほど・・・。
> 「解説書」ではなくて「規格書」「Cの定義文」みたいに接すれば有用だということですね?

厳密性に欠けるので「規格書」や「定義」ではないですね。
「Cの入門書」「解説書」っていうのが正しい。
0202Kusakabe YouichiNGNG
In article >>165, 165 デフォルトの名無しさん wrote:

> つか、日本語版訳が悪いから止めとけってばよ

そうですね誤訳や誤植が多いです。
英語読めるひとはなるべく原書を読みましょう。
0203Kusakabe YouichiNGNG
In article >>167, 167 デフォルトの名無しさん wrote:

> じゃー漏れがもっとわかりやすく翻訳しなおしてやろうか?
> あれって許可いるのか?

翻訳するのはかまわないですが、それを出版するには翻訳権の問題が
ありますね > 2次著作を出版
0204Kusakabe YouichiNGNG
In article >>170, 170 デフォルトの名無しさん wrote:

> 引用には許可は不要です。翻訳してもOK.

こういうデマを本気にしないようにね。
0205デフォルトの名無しさんNGNG
偽のほうが、まともなこと書いてるわ(藁
0206デフォルトの名無しさんNGNG
>>77
 int A[100] = {0, 1, 2, 3, ... 99};
 int B[10];
 int index;

 for(i = 0; i < 10; i++)
 {
  index := random(100 - i);
  B[i] := A[index];

  // indexより右にある要素を左にずらす。
  if (index < 99 - i)
  {
   memmove(&A[index], &A[index + 1], 99 - i - index);
  }

 }

要件を満たしていませんか?

>>80
>結局何の確率が知りたいのかわかんない。

どこかに0-99までの値で重複しない乱数を10個取得する方法があるとすると、
その方法(方法1)と、上の方法(方法2)が同じ結果を出す確率です。

例えば結果が、1, 2, 3, ...となった場合、
方法2では、random(100 - i)が全部1を返した事になります。

そこで、方法1がデタラメに値を出して1, 2, 3...となった確率と
random(100 - i) が全部1 を返した確率は同じか?と思ったのでした。

randomは真の乱数を返すとします。
ここでは関数の実装方法による出目の確率は問題にしません。
0207デフォルトの名無しさんNGNG
はじまったか。

K&Rは開発者なので、K&R本が良い悪いとか教育者として
どうこういう話は俺もなんだか的外れな印象を受けますね。
0208あぼーんNGNG
あぼーん
0209デフォルトの名無しさんNGNG
>>190
unsignedが処理系依存なら、abs()使えば?
0210デフォルトの名無しさんNGNG
第五款 著作権の制限(引用)
第三十二条 公表された著作物は、引用して利用することができる。
この場合において、その引用は、公正な慣行に合致するものであり、
かつ、報道、批評、研究その他の引用の目的上正当な範囲内で行なわれる
ものでなければならない
0211デフォルトの名無しさんNGNG
デマですね。その本を「わかりやすいいい本だ」と薦めて、
それなのにその本は実は悪書だと理解していない馬鹿が、
「自分の理解力に問題がある」ことを認めたくないがために、
事実のほうをねじ曲げて「わかりやすい本だ」ということにしようとしたのでしょう。
0212デフォルトの名無しさんNGNG
>>209
んー… abs() をどう使うのか思いつかない。
おしえて。
0213デフォルトの名無しさんNGNG
>>212
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|((abs(i)&MASK)>>n))
では、だめか?
0214デフォルトの名無しさんNGNG
わかりやすいといっているのは
わかりやすかったからわかりやすいというのではなく
わかりやすくなかったのにわかりやすかったといわないと
わからないばかだとおもわれるから
わかりやすいといっているわけですよ
0215Kusakabe YouichiNGNG
In article >>189, 189 179 wrote:

> 引き続きレスありがとうございます。
> static宣言するメリットというのは外から参照できないというのに尽きるのでしょうか?

178ペイジと254ペイジに解説してありますよ。
0216デフォルトの名無しさんNGNG
>>213
なるほどー。1の補数と2の補数でもOK?
ビットパターンが変わりそうなんだけど…
0217206NGNG
>どこかに0-99までの値で重複しない乱数を10個取得する方法があるとすると、
これも一つ値が決まると、次は99種類の値から選ぶ事になるので、
確率は同じ。

>>206のやりかたで問題ない。

求める個数が少なく、randomの範囲が大きい場合、配列の大きさがもったいないので、
その時は日下部法を使えばいいかな。

求める個数とrandomの範囲が大きく、かつ近い場合は206のやり方がいい。
求める個数が多い(=配列Bが大きい)ので配列Aの大きさは問題無し。
0218仕様書無しさんNGNG
>>216
つーか、>>182 が、「最上位ビット以外をシフトしたい」と
言ってる意味がわからんのよ、俺。
左から0詰めたいのか、1詰めたいのか(負の場合)。
0219Kusakabe YouichiNGNG
In article >>207, 207 デフォルトの名無しさん wrote:

> はじまったか。
>
> K&Rは開発者なので、K&R本が良い悪いとか教育者として
> どうこういう話は俺もなんだか的外れな印象を受けますね。

っていうかカーニハンは教え方上手いですよね。
0220Kusakabe YouichiNGNG
In article >>208, 208 デフォルトの名無しさん wrote:
> おこずかいの欲しい女の子募集!!

づ
0221Kusakabe YouichiNGNG
In article >>209, 209 デフォルトの名無しさん wrote:

> >>190
> unsignedが処理系依存なら、abs()使えば?

...
0222デフォルトの名無しさん NGNG
>>221
(unsigned char)(-1)
1 ? 255 ?
0223デフォルトの名無しさんNGNG
>>218
俺もよくわからんです。(w
算術シフトみたいなのをイメージしたんだけど、負数の表現方法で
ビットパターンそのものが違うから、最上位ビット以外シフトに
どういう意味があるのか俺はよくわかってなかったりする。(w
0224206NGNG
無視しないでよ。
0225デフォルトの名無しさんNGNG
個人的にはK&Rは辞書代わりに使ってました(ます)。
本当は規格書を参照した方がいいのでしょうけど。。

なお、K&Rの正誤表なるものがベクターにありました。
内容は未確認ですが。。
0226デフォルトの名無しさんNGNG
最近のK&Rは正誤表どおりに直ってる

けどまだちょっと違うとの声
0227デフォルトの名無しさんNGNG
>>4がわからん。 1とは別人なのかな??
0228Kusakabe YouichiNGNG
In article >>225, 225 デフォルトの名無しさん wrote:

> 個人的にはK&Rは辞書代わりに使ってました(ます)。
> 本当は規格書を参照した方がいいのでしょうけど。。

主にどんなことを調べていましたか?
演算子の結合の優先順序?
0229デフォルトの名無しさんNGNG
>>227
1 の名前はネタ。本物の Kusakabe Youichi は煽りのプロ、かつスレ違いな話を
age で延々と続けるので、相手にしないことが推奨されてます。また騙りも多く、
Kusakabe Youichi 名義の人間を相手にした結果、荒廃したスレッドは数知れず。

ただし、本物の Kusakabe Youichi は煽りのプロとはいえ、技術的には「それなり
に分かってる」人なので、まっとうな返事をもらったら感謝しておきましょう。スレ
違いなツッコミを受けたら、はらわたが煮え繰り返っても相手にせず無視しましょ
う。

#スレを読んでる人には、どっちがバカかは論争せずとも分かってます。

Kusakabe Youichi について、これ以上の詳しいことはプログラマー板の自治スレ
や隔離スレを読んで悟ってください。
0230206NGNG
私が無視されるのって、もしかして日下部さんの痛い所を突いたからですか?
ごめんなさい、あやまります。
0231Kusakabe YouichiNGNG
In article >>230, 230 206 wrote:

> 私が無視されるのって、もしかして日下部さんの痛い所を突いたからですか?

え、どの発言ですか? > 無視された
0232206NGNG
>>231の発言に私は答えるべきでしょうか? それとも無視するべきでしょうか?
>>229さん、教えて下さい!
0233デフォルトの名無しさんNGNG
自分の発言くらい自分で判断しろ!
0234Kusakabe Youichi NGNG
あ、俺どうしようもなくキチガイだから。
0235デフォルトの名無しさんNGNG
>>232
痛い/痛くないは技術的な話から逸れそうだから、続きはこっちでやれば?

日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/
0236デフォルトの名無しさん NGNG
くだらない事ですが、、文字配列の添え字アクセスについてです

main()
{
  FILE *fp = NULL;
  char *buf = NULL;  /* 行バッファです */
  size_t size = 10240;/* バッファのサイズです */

  /* ファイルをオープンします */
  buf=(char *)malloc(size);
  memset(buf,'\0',size);/* 塗りつぶしておきます */
  while(fgets(buf,size,fp)){
    if(buf[size-3] != '\0')/* ←←ここです! *//* 行の最後まで読めなかった */
      /* 領域を拡張して読み直します */
    else
      printf("%s",buf);
  } 
}
この[size-3]の添え字計算はマズイと言うか最適化されませんか?
char *chkptr = size - 3;として
buf[size-3] の変わりに *chkptr とした方が良いでしょうか
reallocしてアドレスが変わる可能性が有るから、最適化出来ないのかなぁ・・・
とか勝手に思ってるんですが、
と言うかこのやり方馬鹿ですか? (汗
0237デフォルトの名無しさんNGNG
うわっ間違えました!!
char *chkptr;
chkptr = buf + sizeof(char)*(size - 3);
です 、、
0238デフォルトの名無しさんNGNG
>>236
どういう書き方をすると、速くなるかは実際にコンパイルするまで
分かりません。
工夫した書き方で、逆に遅くなることもあります。

その例だと、どちらが速くなっても、わずかな差しかないと
思うので、自分が「素直」だと思う書き方が良いと思いますよ。

スピード重要で少しでも早くしたいときは、ソースで判断せずに、
実際に実行させて、計測してください。
0239デフォルトの名無しさんNGNG
>>237
>chkptr = buf + sizeof(char)*(size - 3);

この sizeof はいりません。
charだから動いているけど、それ以外の型だと、このコードは
正常にうごきませんね。
0240デフォルトの名無しさんNGNG
まず判定方法を改めろ。fgetsの返値を使うとかな。
最適化を語るのは、それからの話だ。
0241236 NGNG
間違えてるじゃん、、ううっ、皆さん有難う御座います。
>>238
気にする程でも無いですか、そう言われると気にならなくなって来ました
当分は-O3様にお任せしますです。
>>239
ぎゃっ、すいません。キャストか良く分かっていないです。。。
>>240
戻り値はこの場合だとbufですよね、、でもif(buf=fgets(buf,size,fp))とか
すると開放する時に if(buf);free(buf); って出来なくなるし。。。
取り合えず変なやり方と言う事ですよね。うーん
0242236NGNG
もう間違えまくり(鬱
キャストか → キャストとか
if(buf=fgets(buf,size,fp)) → if((buf=fgets(buf,size,fp))!=NULL)
逝ってきます
0243Kusakabe YouichiNGNG
In article >>236, 236 デフォルトの名無しさん wrote:
>   FILE *fp = NULL;
>   char *buf = NULL;  /* 行バッファです */

意味のない初期化ですね。

>   size_t size = 10240;/* バッファのサイズです */

変数に入れなくてもいいのでは?

>   buf=(char *)malloc(size);

エラーチェックぐらいしておけば?

>   memset(buf,'\0',size);/* 塗りつぶしておきます */

何の意味があるの? (末尾だけじゃだめなの?)

>     if(buf[size-3] != '\0')/* ←←ここです! *//* 行の最後まで読めなかった */
>       /* 領域を拡張して読み直します */

じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?

> この[size-3]の添え字計算はマズイと言うか最適化されませんか?
> char *chkptr = size - 3;として

なぜ-3なの? -1 じゃなくて?
0244Kusakabe YouichiNGNG
In article >>240, 240 デフォルトの名無しさん wrote:

> まず判定方法を改めろ。fgetsの返値を使うとかな。

どう使うのでしょうか? :)
0245Kusakabe YouichiNGNG
In article >>243, 243 Kusakabe Youichi <[email protected]> wrote:
> >   memset(buf,'\0',size);/* 塗りつぶしておきます */
> 何の意味があるの? (末尾だけじゃだめなの?)

っていうか末尾の1つ前か

> > この[size-3]の添え字計算はマズイと言うか最適化されませんか?
> > char *chkptr = size - 3;として
>
> なぜ-3なの? -1 じゃなくて?

-2かな。
0246236NGNG
>>Kusakabe Youichiさん 有難う御座います。
>意味のない初期化ですね。
はい、厨房です、bufに付いては後でfreeする時に怖いので(勘違い?)(鬱
>変数に入れなくてもいいのでは?
/* 領域を拡張して読み直します */ の部分が
bufExpansion(&buf,&size,fp);とかになっとります(鬱
>じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?
力の限り(鬱
>なぜ-3なの? -1 じゃなくて?
end of string\n\0というパターンを考えました(鬱

何かスレのレベル下げまくりみたいなんで山に帰ります。
謝謝了。
0247Kusakabe YouichiNGNG
In article >>246, 246 236 wrote:
> > 意味のない初期化ですね。
> はい、厨房です、bufに付いては後でfreeする時に怖いので(勘違い?)

はい勘違いですね。逆に言えばNULLをfreeしたときの挙動は
標準規格では未定義だったように記憶しています。
(少なくとも標準規格以前のBSD(VAXとか)ではfree(NULL)したときには
何も起きませんでしたが、SystemV系のではfree(NULL)するとSegmantation Fault
でコアダンプするものがほとんどでしたよ)

> > 変数に入れなくてもいいのでは?
> /* 領域を拡張して読み直します */ の部分が
> bufExpansion(&buf,&size,fp);とかになっとります

なるほど。だったら変数にすることはかまわないですが、
最初に変数に与える数値は#defineしておきましょうね。
あと、そのbufExpansionですが、reallocとか使っているのでしょうか?
fpを渡しているのはなぜでしょう?
もしかして中でfgets()を呼んでいる?
だとしたら「関数のまとめる」ために切る部分を誤っているような。

# 一般に言って、やたらと引数が多くなったり、アドレスを渡す引数が多くなる
# ような関数分けはどこか間違っていることが多いです。

> > じゃあ1行が数ギガバイトあったらそこまで拡張するのでしょうか?
> 力の限り(鬱

> > なぜ-3なの? -1 じゃなくて?
> end of string\n\0というパターンを考えました(鬱

え? でも「\n」だったら「\0ではない」のだからいいのでは?
0248デフォルトの名無しさん NGNG
if(baz)
free(baz);
で破棄した時にbazにゴミが入ってたらヤバイっつってんだろ
魔板でレスするなって怒られてるんだけどな B -)
0249Kusakabe YouichiNGNG
In article >>248, 248 デフォルトの名無しさん wrote:

> if(baz)
> free(baz);
> で破棄した時にbazにゴミが入ってたらヤバイっつってんだろ

この馬鹿理解してないみたい(^^;

つまり、ifでNULLだけどけてみたり、freeでゴミが入ってるかもしれない
なんていうコードの書き方ってのは「場当たり的すぎ」だという意味です。
(「予防的プログラミング」に似ているがその実が違う)
0250デフォルトの名無しさんNGNG
実の無い会話だね
0251デフォルトの名無しさんNGNG
つくづくこのオッサンは口だけだと思ってしまう
アホが書いたランダム爆撃コードを良く退治させてもらったもんだが
多分アンタの本読んだんだろね p
素人には難しいかもしれないが、コーダーってのは色んなレベルの寄せ集め
なんだよ、もし話が理解出来なくて気を悪くしたならすまないね。
0252Kusakabe YouichiNGNG
In article >>251, 251 デフォルトの名無しさん wrote:

> つくづくこのオッサンは口だけだと思ってしまう

「思ってしまう」->「思いたい」ですかね。

> アホが書いたランダム爆撃コードを良く退治させてもらったもんだが
> 多分アンタの本読んだんだろね p

11月12日発売でした。

> 素人には難しいかもしれないが、コーダーってのは色んなレベルの

とか偉そうに言うやつにかぎってしょーもないコード書くのよね:)
■ このスレッドは過去ログ倉庫に格納されています