C言語の質問スレッド<42>
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNG問題をちゃんと切り分けて、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/
0809808
NGNGlistをこぴってるから、直接リストをいじるのとかわらないんでないの?
0810デフォルトの名無しさん
NGNG必要ないです。
かわらないです。
いじょ。
0812デフォルトの名無しさん
NGNG引数を直接いじると何か気持ち悪い、っていう程度の
理由だと思うよ。
0813デフォルトの名無しさん
NGNG気持ちはわかるね。たぶん808のソースはどっかのコピペだろうから
分かりやすくしてんだろう。
でもオレも後で見たときの可読性を考えれば、いい事だと思う。
0814デフォルトの名無しさん
NGNGあなたの文章には鬱病の人特有の言い回しが見れます。
病院に行ったほうがいいと思います。
鬱は必ず直ります。
0815デフォルトの名無しさん
NGNGうつ病特有の言い回し?
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGいるよ。はあはあ
0819デフォルトの名無しさん
NGNGお前らコンパイラとエディタなんですか?
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGそんなあせんなよ。
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG{
int num;
list *next;
}
みたいな線型リストだとして
list == NULLっていうのはどういうことですか?
listの要素全部が0,NULL,'\0'ってこと?
0824デフォルトの名無しさん
NGNG線型リストのさいしょの構造体には値は入れないんですか?
0825デフォルトの名無しさん
NGNGそれは実装した人次第だが、一般的にはリストが空。
0826デフォルトの名無しさん
NGNG最初はポインタの方がすっきりするが、プログラムを組むとわかるが
空の構造体の方が扱いやすい。
0827デフォルトの名無しさん
NGNGそれをおセンチっていいます。
0828デフォルトの名無しさん
NGNGなつかしいでつね
0829デフォルトの名無しさん
NGNG質問と回答が殺伐としていてよいね
>>827-828
消えろ。
0830デフォルトの名無しさん
NGNGサンクス
0831デフォルトの名無しさん
NGNGどうやって調べたらよいのでしょうか? なにかリストみたいなのはありますか?
printfは再入可能でないらしいのですが、僕には理由がわからず。
とにかく、リストがあればとりあえずは楽かなと。
0832デフォルトの名無しさん
NGNGC++ってなかなかいいセンスしてると思うのは俺だけか。
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGマルチスレッドで使って安全という意味だよね?
C言語の規格自体ではそこまで決まってない。
かといって処理系ごとにまったくバラバラかというとそうでもない。
Unix系のOSなら、Single Unix Specificationという規格でけっこう細かく
決まっている。
http://www.opengroup.org/onlinepubs/007908799/xsh/threads.html
のThread-safetyセクションにリストされている関数はthread-safeで*ない*。
他は全てthread-safe。(printfもthread-safe。)
SUS準拠OS以外なら、処理系のマニュアルを見るしかない。
0835デフォルトの名無しさん
NGNG今度から初心者の質問すれと
上級者の議論すれにわけたいね
0836デフォルトの名無しさん
NGNGわけたら余計に人減るじゃん。
0837デフォルトの名無しさん
NGNGマルチスレッドもありますが、割り込みでprintfを使おうとしてました。
自分なりに調べましたが、
printfはスレッドセーフですが、Async-Cancel-Safe 関数ではないそうです。
いやぁ、よくわかりませんなぁ。素人は割り込むなと言うことですか?w
0838デフォルトの名無しさん
NGNGシグナルハンドラの中で使いたいのなら、async-cancel safeじゃなくて
async-signal safeなものを探すべきでしょう。
Solarisだとマニュアルに一覧があるけど(90個くらい)。
0839デフォルトの名無しさん
NGNGSolarisのAsync-Signal-Safe functions一覧
http://docs.sun.com/db/doc/816-0220/6m6nkoroc?a=view
0840デフォルトの名無しさん
NGNGprintfをシグナルハンドラから呼びたいなら、
Async-Signal-Safeでないライブラリ関数を実行中はシグナルをブロックするように
すれば良いんじゃない?
あるいは、シグナルハンドラでは何か情報を変数に書くだけにして、
メインのスレッドでその情報をプリントする。
0841デフォルトの名無しさん
NGNGchar buf[BUF_SIZE] = "";
と書くとbufの先頭1バイトだけでなくBUF_SIZE全部が終端文字で初期化されます。
これは標準なのでしょうか?
0842デフォルトの名無しさん
NGNG「終端文字で」ではなく、「残りは、staticな変数と同じように」
初期化されます。それが規格どおりの振る舞いです。
0843デフォルトの名無しさん
NGNGすばやいご回答ありがとうございました。
0844デフォルトの名無しさん
NGNGvoid signal_handler (int s)
{
i = 1;
printf ("%d\n", s);
}
↑ここでprintfを呼ぶのと
int main ()
{
signal (SIGINT, signal_handler);
while (!i)
printf ("%d\n", i);
return 0;
}
↑ここで割り込みを入れるのと、どちらがいけないということですか?
0845デフォルトの名無しさん
NGNG(断っておきますが、これはC言語の範囲を超えた話題です。)
mainからprintfを呼び出して実行中にシグナルを受け取ったとします。
そのとき、printfが何かの資源をロックしていたとします。
signal_handlerの中からprintfを呼ぶと、デッドロックが起きる可能性が
あります。
汎用の解決策は >>840 の通りです。処理系によっては、シングルスレッドの
プログラムだとprintfが資源をロックしたりしない(したがってデッドロック
が起きない)かも知れません。
0846デフォルトの名無しさん
NGNG説明して頂いてどういうことか分かりました。
この例では両方で呼び出してはまずいということですね。
割り込みをするプログラムでは、
printfを使ってはいけないのかと思ってしまっていました。
ありがとうございました。
0847デフォルトの名無しさん
NGNGその前に糞スレの削除依頼出してこいや
話はそれからだ
0848デフォルトの名無しさん
NGNGリンクにポインタを使ってたばかりに、reallocしたら大変な事になって
しまいますた。
問題なのは当たり前だけど、reallocを使う可能性がある時は整数インデックス値
振らんといかんの?ってのは常識!?
0849デフォルトの名無しさん
NGNGまともな日本語で書いてみてくれないか。
0850デフォルトの名無しさん
NGNGと配列を初期化したとき、配列の要素数を簡単に知る方法はありますか?
0851デフォルトの名無しさん
NGNGひょっとして、リンクにつながった要素をreallocしようとしてるとか?
(1)大きさが変わる可能性のあるものは、リストにつながってる構造体とは
別にして、リストの構造体からポインタで指す。
(2)双方向リストにして、reallocする前にいったんリストからはずし、
reallocの後で挿入しなおす。
のどちらかで解決。
0852デフォルトの名無しさん
NGNGレコードの増減・並び替えが行われるデータ構造があるんだが、最初にこれを読み込む時
にはレコード総数が分かっているのでmalloc(データ構造*レコード数)という感じでメモリ確保
していたんだ。
で、データの追加・削除・並び替えが発生するんで、リスト構造にし、リンクにはレコード
参照ポインタを使っていたの。
しかし、ここで問題があって、データの追加・削除時にはreallocを使って全データのメモリ
を再確保していたんだよね。
これすると、メモリアドレス変わっちまうんで、リンク情報が役に立たなくなって困ったわけ。
1レコード読むたびにmallocして、追加・削除するたびにもmalloc,freeしていれば
よかったんだけど、レコード数が多いから速度的に難があると思って、全データを
一気にmalloc,reallocしてたの。
漏れ、
非常識なんだろな。
0853デフォルトの名無しさん
NGNGですた。
>851 ありがと。
0854デフォルトの名無しさん
NGNG追加時にreallocする必要はないだろ。(1個ずつmallocすればよい。)
削除時にreallocは無理だろ。(途中だけ削除したりしないのか?)
いずれにせよreallocはやめるべし。
最初にまとめてmallocするのはそのままでもよい。
freeする替わりに、自分で作ったフリーリストにつないで置けばよい。
追加のときはフリーリストから空き構造体を取り出す。フリーリストが
空ならmallocする。
0855デフォルトの名無しさん
NGNGsizeof(a)/sizeof(i)
0856855
NGNGsizeof(a)/sizeof(int)だ。
0857デフォルトの名無しさん
NGNG> 削除時にreallocは無理だろ。(途中だけ削除したりしないのか?)
リンクポインタだけ書き換えて、全データサイズ縮小realloc・・・すまそ。
厨な組み方してました。阿呆です。厨でも組みませんな。逝ってきます。
>freeする替わりに、自分で作ったフリーリストにつないで置けばよい。
>追加のときはフリーリストから空き構造体を取り出す。フリーリストが
>空ならmallocする。
そっか!なるほど。
フリーリストとは思い付かなかった。
質問して良かった。ありがと!!
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGなぜintにキャストするのかわからん。
unsignedのままじゃまずいのか?
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNGunsigned だと何か突っ込まれるんじゃないかと、無い知識を総動員してキャストしてみたものの
結局突っ込まれてしまった…に一票。
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGおまえのようなバカに優しいCスレ住人の俺が教えてやるとだな、
いや、教えるのもめんどうなのでエキスパートCプログラミング54ページを読め。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGレコード個々にmallocが必要になってパフォーマンス悪くならない?
0866デフォルトの名無しさん
NGNG他の構造と比べても単純で操作も難しく無い。
0867デフォルトの名無しさん
NGNG意味がわかりません。
0868デフォルトの名無しさん
NGNGわざわざunsignedにしてあるのに(ワラ
0869bloom
NGNGhttp://homepage.mac.com/bloombloom/
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNG(*^o^*)
0872デフォルトの名無しさん
NGNG(*^o^*)ごるぁ♪
0873デフォルトの名無しさん
NGNG(*^o^*)おはよう♪
ヌル文字なんて存在しないよね!?
あるサイトに「文字列の終端はヌル文字で・・・」ってあったYO!
これマジでネタじゃないから、ちょっと不安になった・・・
0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNGASCIIの「'\0'」をヌル文字またはナル文字と言うことはありますが何か?
またNULLポインタ「NULL」とは別物ですが何か?
最後にヌルストリング「""」と言うものも存在し
上記三種は全て別物ですが何か?
0876initialization
NGNG0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGリンクにポインタではなく、配列のインデックスを使うと良い。
0879デフォルトの名無しさん
NGNG見る人の事まで考えて、改行してくれ。
0880デフォルトの名無しさん
NGNGむしろ冗長
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGC では普通考えられないが、\0 以外が終端文字になる事もある。
ナル文字、ヌル文字を覚えておけば普通は問題無いが、単にゼロと呼ぶ人がいる
すも知れない。
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNGワラ
0886デフォルトの名無しさん
NGNG論争スレ逝ってくれ
0887デフォルトの名無しさん
NGNG相手がどんなボールを打って来ても打ちやすい所にボールを返すのが真のプログラマー
糞プログラマーの言い分は決まって「へぇ、そんなボールも打ち返せないんだ」
真のプログラマーは糞プログラマーと同じ事を苦も無くできるが打ち返す側の
事も考慮する。
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG論争ならここですればいいだろ。そのためのスレッドなんだし。
0890デフォルトの名無しさん
NGNG意味さっぱりわかんねーよ。
バカスカ打たれてたらピッチャー降格されるだろ
0891デフォルトの名無しさん
NGNGC に関する話ならここでもいいけど、コーディングスタイルは直接関係ないだろ。
0892891
NGNG0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNG所詮宗教問題であって間違いなんて無いのにワラなんてつけてるところが
相手の意見をまともに聞こうとしない厨房であることが明らかなのだが。
0896デフォルトの名無しさん
NGNG比較する可能性があるならすべきだが。
0897デフォルトの名無しさん
NGNG板違い。マ板逝け。
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNGどっちにしてもあふぉのJPSがつくった論争スレがある。
http://pc3.2ch.net/test/read.cgi/tech/1037105440/l50
論争すんだったらこっちでやった方がいいと思うよ。
実際このスレ寿命みじかいのは論争のせいだし。
このスレ以外に宿題とかなしでCのこと訊けるスレないじゃん
0900デフォルトの名無しさん
NGNG質問にどう答えるべきかの考え方が
人によって違うんだから、質問されたら論争になるのは
仕方がない。
0901デフォルトの名無しさん
NGNG簡単な質問が論争につながってしまうのは
Cが論争を引き起こしやすい言語だからだ。
0902デフォルトの名無しさん
NGNGじゃあスレタイ変えたほうがいいしょ?
質問&論争スレとかさ。
質問しにきた香具師が、困るにきまってる。
0903デフォルトの名無しさん
NGNGそしたら余計論争烈しくなるじゃん。
0904デフォルトの名無しさん
NGNGchar型の文字列にファイル名をプログラム中で入力させて、
読み込む事とかできますか?
また、それを関数に渡して、その関数の中で処理することはできますか?
0905デフォルトの名無しさん
NGNGだから分けろっつてんの。
質問きて論争になるんだったら、そっから論争スレにうつりゃいい。
0906デフォルトの名無しさん
NGNG「char型の文字列」では多分できない。
0907デフォルトの名無しさん
NGNG出来ます。
0908デフォルトの名無しさん
NGNG美女の女性が馬から落馬した
レス数が900を超えています。1000を超えると表示できなくなるよ。