C言語なら、俺に聞け! <11>
■ このスレッドは過去ログ倉庫に格納されています
0001スーパーハッカー 日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
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プログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通のようだぞ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するようなヤツはこれでも買え。
これでわからない、救いがたいヤツはあきらめろ。
・作ってわかるCプログラミング(アヒル本と呼べば通のようだぞ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1005618315/250-3950205-1475419
・前スレ C言語なら、オレに聞け! <10>
http://pc.2ch.net/test/read.cgi/tech/1008300863/l50
0153できた!
NGNGアヒル本つかってます。
クソの役にもたちません。
0154Kusakabe Youichi
NGNG> アヒル本つかってます。
> クソの役にもたちません。
と、いうことにしてみたいが、実際には買っていないので、
こじつけができない :)
# こわらがずに買えばいいのにー:)
0155デフォルトの名無しさん
NGNG0156できた!
NGNG0157153
NGNGすまん >156
0158できた!
NGNG0159できた!
NGNG止めれ
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG{
void *v = malloc(size*(nh-nl+1+NR_COMPATIBLE));
if (!v)
return NULL;
else
return v - size*(nl-NR_COMPATIBLE);
}
これさっぱりわからないんです。具体的にこれの返り値ってなに?
あとvoidって返り値無しってことじゃないの?
0163デフォルトの名無しさん
NGNGvoid *は型の決まっていない汎用ポインタ
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGvoid 辞書で引いたら空虚って事だった
なぜ空虚なものへのポインタが型の決まってないものへの
ポインタなのか考えるとミラクルなので
考えない事にします。
0167デフォルトの名無しさん
NGNG新年だよー(・∀・)ノ
0168デフォルトの名無しさん
NGNGの関数はreturnで値を返すと
最初の無名float型の変数に代入されて
呼び出し側で使われる、、
らしい。
0169Kusakabe Youichi
NGNG> こわいから買いません。
こわがりすぎー
0170Kusakabe Youichi
NGNG> これさっぱりわからないんです。具体的にこれの返り値ってなに?
> あとvoidって返り値無しってことじゃないの?
「かえりち」って読むんですか? :)
0171デフォルトの名無しさん
NGNG0172Kusakabe Youichi
NGNGということにしたい?
0173デフォルトの名無しさん
NGNG0174Kusakabe Youichi
NGNG> >そう返り血だ
>
> ということにしたい?
引用の仕方がちがうって。
0175Kusakabe Youichi
NGNG> 草、こわいょぅ > (;´д`)⊃ (^-^;)<こわがりすぎー
元来のこわがりすぎ体質なんですか?
017617歳
NGNGお年玉よこせやゴルァ!
パパ、お願い(はぁと)
0177テレホマン
NGNG0178162
NGNGchar *c=malloc(sizeof(char)*5);
return ++c;
}
void *(testv)(void){
void *v=malloc(sizeof(char)*5);
return ++v;
}
void *(testcv)(void){
void *v=malloc(sizeof(char)*5);
return ++((char*)v);
}
gccとbcc32でコンパイルしてみたら、gccでは全部問題ないのに
bccでは真中のは
エラー E2453 pointerinc.c 12: 'void' 型のサイズは未知あるいはゼロ(関数 testv )になるのは何でだろ
bccでは一番下のと入れ替えてもだいたい意味は一緒ですか?
0179デフォルトの名無しさん
NGNGvoid * に対して演算ができるのはgccの拡張仕様
0180デフォルトの名無しさん
NGNGp++;
の結果はどうなるの?
0181デフォルトの名無しさん
NGNGサイズがわかんねーのにどうやって進めるってんだよ
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG「C言語を勉強しているのですが、ポインタがよくわかりません。教えてください」
みたいなポストがあって、ま、fjみたいな場所に、こんな書き込みをする方もする方だと思いますけれどもそれは取り敢えず置いとくとして、それに対するフォローアップが、
「コンピュータのメモリとアドレスの概念について勉強するのがいいですよ」
とか、
「先にアセンブラを勉強したらどうでしょうか」
みたいな調子だったのを見て、ちょっと暗澹たる気持ちになりました。
0184Kusakabe Youichi
NGNG> 「コンピュータのメモリとアドレスの概念について勉強するのがいいですよ」
> とか、
>
> 「先にアセンブラを勉強したらどうでしょうか」
> みたいな調子だったのを見て、ちょっと暗澹たる気持ちになりました。
ごくふつうの反応では?
0185じゃあ
NGNG0186Kusakabe Youichi
NGNG> 前橋対日下部?
それはだれですか?
0187デフォルトの名無しさん
NGNG-Wpointer-arithですかね
0188_
NGNG0189デフォルトの名無しさん
NGNGそれともしちゃいけないんですか?
0190デフォルトの名無しさん
NGNGkusakabe先生に教えてもらえ w
0191デフォルトの名無しさん
NGNGメモ帳だといくらなんでもキツイので。
できればフリーのエディタがいいです。
0192デフォルトの名無しさん
NGNG超おすすめ
0193Kusakabe Youichi
NGNG> お前はfreeに付いて何も分かって無い
> kusakabe先生に教えてもらえ
とかけばそう思うひとがいるかもしれないという効果を狙って書いたのでしょうか? :)
# 無駄なような。
0194Kusakabe Youichi
NGNG> Cプログラムを書くのにお勧めのエディタってありますか?
viは?
> メモ帳だといくらなんでもキツイので
エディターのせいにしないように
0195189
NGNG0196デフォルトの名無しさん
NGNGだめ
0197デフォルトの名無しさん
NGNGどうすりゃいいんですか?
0198デフォルトの名無しさん
NGNG>>197
どう?
0199Kusakabe Youichi
NGNG> 理論OR演算子が表示できません
> どうすりゃいいんですか?
どんな環境を使っているんだろう。
0200デフォルトの名無しさん
NGNGちゃんとした奴じゃないとダメなのかな?
因みにこれなんだけど
ttp://homepage1.nifty.com/kentake/
0201デフォルトの名無しさん
NGNGどうだすの?
0202デフォルトの名無しさん
NGNG0203Kusakabe Youichi
NGNG> フリーのコンパイラーつかってんだけど
> ちゃんとした奴じゃないとダメなのかな?
> 因みにこれなんだけど
> ttp://homepage1.nifty.com/kentake/
そんなゴミで遊んで時間つぶしている暇があるなら、
ふつうにCの勉強でもすればいいのでは?
0204デフォルトの名無しさん
NGNG普通じゃないのはお前の出た大学だけどね ぷ
0205デフォルトの名無しさん
NGNGbccでも使えば?
0206Kusakabe Youichi
NGNG> ゴミはお前だし
とか意味のない反応してみたところでも無駄でしょう :)
すくなくとも
http://homepage1.nifty.com/kentake/
これはゴミでしょうね。そんなので無駄な時間使う暇があるなら、
ふつうのコンパイラーでも無料なのはいくらでもあるんだから、
それを使えばいいのでは?
0207デフォルトの名無しさん
NGNGYahooBBSで教えてもらったのかな?
0208デフォルトの名無しさん
NGNGこいつ>>204に反応しないなんて大人ですな
0209デフォルトの名無しさん
NGNG/⌒彡
/冫、 )
/ ` ∩
(つ 丿
( ヽノ
し(_)
0210デフォルトの名無しさん
NGNGセンクス
0211ひしたぶ
NGNG0213デフォルトの名無しさん
NGNGchar a[] = { 65, 10, 0};
と
char a[] = { 65, 10, '\0');
は同じと考えてよいのでしょうか。バイナリのdiffを取ると同じになったのですが・・・
0214デフォルトの名無しさん
NGNG同じです。
0215デフォルトの名無しさん
NGNG0217問題
NGNG2.キーボードから入力された学生証番号、氏名、住所をディスプレイに表示するプログラム(このとき実行した人がキーボードから入力した学生証番号などが表示されるようにする)
3.ディスプレイに 整数nを入力するように表示し、0 からキーボードから入力された n 以下の偶数の和を求めその結果をディスプレイに表示するプログラム(2づつ数を増やすには +=2 を用いる)
4.ディスプレイに和を求める 番号 n を入力するように表示し、1,6,11...のような 5飛びの数の1から入力された番号nまでの和を求めてディスプレイに表示するプログラム(注意。k番目の数は 1+5*(k-1) で与えられる。)
5.10人の身長のデーターをキーボードから入力して、その平均をディスプレイに表示するプログラム(繰り返し文を使用すればよい)
6.ディスプレイに二つの 実数を入力するように表示して、キーボードから入力された二つの実数の 和、差、積、商(始めに入力された数割る二番目に入力された数)をそれぞれディスプレイに表示するプログラム
7.優、良、可にする最低点を実行時初めに設定できるようにし、その後キーボードから入力された学生の点数によって成績を優、良、可に振り分けるプログラム
8.キーボードから二つの実数を入力するように表示し、入力された二つの数を大きい順に並べて表示するプログラム
9.個人情報として、 氏名、年齢、住所、電話番号、趣味 を含んだ構造体を用いて、個人情報を入力できるプログラム
10.乱数を用いて 丁半 を表示するプログラム
解ける人は全て解いてみてください。…というよりお願いします(涙)
0218デフォルトの名無しさん
NGNGマルチポストするなよ。
以後この件は宿題スレで。
宿題みてあげるっ
http://pc.2ch.net/test/read.cgi/tech/1007902384/
0219デフォルトの名無しさん
NGNGそれくらい頑張って自分で解け
0220デフォルトの名無しさん
NGNGchmod("foo", (statbuf.st_mode & S_IXGRP) | S_ISGID);
とあった時S_ISGIDビットがオンになりS_IXGRPがオフになると
詳細UNIXプログラミングのP82に書いてあるのですが
これではS_ISGIDビットだけが立つのではないのですか?
要するに
chmod("foo",S_ISGID);と同じ意味なのではないでしょうか?
間違っているのでしょうか?お願いします。
0221デフォルトの名無しさん
NGNG~S_IXGRP の間違いじゃない?
0222デフォルトの名無しさん
NGNGこんなバイブルと呼ばれている本にも誤植があるのかしら?
0223デフォルトの名無しさん
NGNG読者から指摘を受けて、ちょっとづつ修正しながら10年くらいかけて100%に近づいていくのです。
たまに絶対に間違いを認めない人もいますが。
0224デフォルトの名無しさん
NGNGK&Rの第二版なら303ページに明らかな間違いが(笑)
0226長くてすみません・・・。
NGNG親プロセスからそのプログラムの標準入力へ文字を送り、その文字を加工して標準出力へ
文字を送ってそれを親プロセスから取得するプログラムを作成中なのですが、
うまくいきません・・・。 子プロセスに gets(buffer); printf("TEST[%s]",buffer);と
あるのですが、getsを待たずに、printfへ飛んでしまいます・・・。 親プロセスから得られる出力は、
TEST[] となってしまいます・・・。 どうやったら、子プロセスで実行されるプログラムのgets関数は、
標準入力に親プロセスから送られてくる文字を待ってくれるのでしょうか?
それぞれのコードは、次のメッセージにコピペします。
0227長くてすみません・・・。
NGNGメインのコードが
http://www.geocities.com/foobar_54321/main_code.html
です。
子プロセスで呼ばれるコードが
http://www.geocities.com/foobar_54321/test9.html
です。
よろしくお願い致します。
0228Kusakabe Youichi
NGNG> K&Rの第二版なら303ページに明らかな間違いが
あの訳本なら誤植・誤訳だらけなのは有名ですが、
原書の話ですか? > 303
0229デフォルトの名無しさん
NGNGint main(void)
{
int u=0;
int x;
int y;
int z;
printf("足したい整数の数を入力して下さい:");
scanf("%d",&x);
for(y=1;y<=x;y++)
{
printf("No.%d:",y);
scanf("%d",&z);
u+=z;
}
printf("%d\n",u);
return(0);
}
これでいんだよね?
でも参考書には
#include<stdio.h>
int main(void)
{
int u=0;
int x;
int y;
int z;
printf("足したい整数の数を入力して下さい:");
scanf("%d",&x);
for(y=1;y<=x;y++)
{
printf("No.%d:",y+1);
scanf("%d",&z);
u+=z;
}
printf("%d\n",u);
return(0);
}
とか書いてあるからわけわからん??
0230デフォルトの名無しさん
NGNG変数宣言はまとめたら?
0231デフォルトの名無しさん
NGNG今度からまとめることにします
初期化はまとめとめない方がいいよね?
int x,y,z,u=0;
とか
0232デフォルトの名無しさん
NGNGまとめたって別にいいじゃん?
漏れは、この例みたいな一文字変数ならば>>231みたいにまとめちゃう。
視認性が気になるならば一文字変数はなるべく使わない。
0233デフォルトの名無しさん
NGNGなるほど
thx
0234デフォルトの名無しさん
NGNG画面に複数コントロールを置いたとして
C++などではクラス型にしてサブクラス化すればいいんだろうけれど
Cの場合はどうすればよいんですか?
例えばstatictextの背景色変えたりするのは
設計時に一つ一つのコントロールのwndprocを全部記述しないといけない?
うまい方法があれば教えてください。
最悪の方法はIf文でhandle比較だろうけれど
なんか
http://pc.2ch.net/test/read.cgi/tech/1009190994/337
http://pc.2ch.net/test/read.cgi/tech/1009071535/183
と同じ種類の質問かな?
一番簡単なのは
1)SetWindowLongで GWL_USERDATA に背景色を埋め込む
2)WM_CTLCOLORSTATIC でコントロールハンドルから
GetWindowLongして もう判るよね
事で、背景色だけじゃないなら構造体のポインタを渡してやればいいんじゃないの?
0237デフォルトの名無しさん
NGNGようはsetwindowLongでHandleに構造体のポインターを読ませるということですね。
大体見えてきました。ありがとうございます。
0238
NGNGintはエラー値が返せるつーのはあるんだろうけど、mfcはBOOLだよねぇ
統一できねぇ〜〜
boolの存在意味がわからん。エラー値不要の部分に使うにしてもtrue/falseが逆で混乱の元
一体なんに使うの?
0239デフォルトの名無しさん
NGNG統一しなくていいから、
関数の前に引数と戻り値の説明を
コメントでつけとけ。
0240デフォルトの名無しさん
NGNG1bitで表現できるから、メモリの節約になるんだよ。
(と言ってる人がいたら要注意)
0241デフォルトの名無しさん
NGNGCで書いたプログラムの一部を、アセンブリ言語で書く方法を
教えろよ。
0242デフォルトの名無しさん
NGNGそういう態度なら一生教えません。
0243デフォルトの名無しさん
NGNGなんで? おしえてよ、知りたいんだよ。
0244デフォルトの名無しさん
NGNG処理系依存。
0245デフォルトの名無しさん
NGNGunsigned char asmcode[]にアセンブラコードぶち込んで
そこめがけてジャンプすりゃいいんだよ。
0246デフォルトの名無しさん
NGNG例えば、DOSのCの関数をASMで書くときは、その関数の名前の先頭に
アンダーラインを足した名前のプロシージャを書くだろ? そして、関数を
呼び出すと、関数の引数が右から順にスタックに積まれて、関数の実体
である、ASMで書いたコードがcall命令で呼び出されるって寸法じゃん。
けど、これって、Windowsでも通用するやり方なんかな。
0247デフォルトの名無しさん
NGNG貴方の命題は自己矛盾しており実現不可能です
お使いのコンパイラをご指示頂ければ回答可能な質問としては
1)Cのソースがあり、コンパイル出力の一部をアセンブリソース形式で出力したい
2)Cのソースの一部をアセンブリ言語で書き直したい
3)Cのソースの一部にアセンブリ言語を埋め込みたい
があります。
0248デフォルトの名無しさん
NGNGもちろん通用する。
0249241
NGNGけっこう難しい日本語だね。 2と3の違いがけっこう微妙で分かりに
くいよ。 まあ、要は、cの関数をアセンブラのコードで直接書くって
やり方だよ。
0250デフォルトの名無しさん
NGNGホントにむかつく態度だな。
Cの関数内にアセンブラコードを埋め込む(インラインアセンブラ)のと
アセンブラで書いてアセンブルしたオブジェクトをリンクするのでは
やり方が違う。
おまえは前者でもやってろよ。
0251デフォルトの名無しさん
NGNG暴力的なことが男らしいと痛い勘違いをしてるんだよ。
0252241
NGNGまあ、まあ、そんなにプンスカすんなよ。又ー利いこうよ、又ー利と
インラインアセンブラ使ったら、擬似命令つかえねーじゃん。
オレが言ってるのは、それぞれ別々に、コンパイルとアセンブルして
オブジェクトを結合するやり方なんだよ。
■ このスレッドは過去ログ倉庫に格納されています