トップページ⇒tech
957コメント294KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001スーパーハッカー 日下部陽一NGNG
おれは42才、24年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのは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
0002デフォルトの名無しさんNGNG
「作ってわかるCプログラミング」を書店で見て、
それでも買ってしまうようなら、Cの才能はないと思え。
0003デフォルトの名無しさんNGNG
どうすればできますか?
教えてください。
0004デフォルトの名無しさんNGNG
char cData;
sscanf(pData, "%c", &cData);//pDataは文字列のポインタ
このコードが不安定なんです。
0005デフォルトの名無しさんNGNG
コンパイルできません。どうしたらいいですか?
OSは Sun0S4.1.3 です。
0006デフォルトの名無しさんNGNG
>>3
何を?

>>4
不安定って具体的にどういうこと?

>>5
どんなメッセージが出てるの?
コンパイラの種類は?

# SunOSにはデフォルトでccはついてないような気がする
00075NGNG
>6
ありがとう!とりあえず cc をインストールしてみる事にします!
0008Kusakabe YouichiNGNG
In article >>1, スーパーハッカー 日下部陽一/1 <[email protected]> wrote:

> おれは42才、24年間プログラムを一生懸命作ってきた。

それってかなりおちこぼれでは? :)
0009Kusakabe YouichiNGNG
In article >>2, デフォルトの名無しさん/sage/2 wrote:
> 「作ってわかるCプログラミング」を書店で見て、
> それでも買ってしまうようなら、Cの才能はない

「ということにしたい」:) ?
0010デフォルトの名無しさんNGNG
>>8
長い間プログラムを作ってると落ちこぼれなのかよ。
あんただって、まだJavaとかやってるんだろ?
0011デフォルトの名無しさんNGNG
>>9
さーね、5年後くらいにはっきり結果がでるんじゃない。
三田本みたいにいわれないといいけどね(反語表現
0012デフォルトの名無しさんNGNG
お前ら。
臭がりすぎ〜
0013Kusakabe YouichiNGNG
In article >>10, デフォルトの名無しさん/10 wrote:

> 長い間プログラムを作ってると落ちこぼれなのかよ。

っていうか、そんなことしかしてないようじゃおちこぼれでしょう。

> あんただって、まだJavaとかやってるんだろ?

Javaをさわるとおちこぼれなんですか? :)
0014Kusakabe YouichiNGNG
In article >>11, デフォルトの名無しさん/sage/11 wrote:

> さーね、5年後くらいにはっきり結果がでるんじゃない。

でしょうね。

> 三田本みたいにいわれないといいけどね

そうですね。(さすがにあそこまでひどい本はないでしょうけど)
0015デフォルトの名無しさんNGNG
ほんと、よく結婚できたよな。
0016デフォルトの名無しさんNGNG
しつも〜ん

string,float,float
string,float,float
という形のCSV形式のファイルから1レコードを読み込むにはどうすりゃいいのさ?
0017デフォルトの名無しさんNGNG
fgets()
001816NGNG
あ・・・すいません質問間違ってました

string,float,float
このレコードを読み込んでから、各フィールドごと変数に入れるには
どうすればよいのですか?
0019Kusakabe Youichi NGNG
In article >>18, 16//18 wrote:

>string,float,float
>このレコードを読み込んでから、各フィールドごと変数に入れるには
>どうすればよいのですか?

strtok()でフィールド分割してatof()で変換すればいいのでは?

312ペイジと314ペイジに書いてありますね。
K&R2版の:)
0020Kusakabe Youichi NGNG
In article >>19, Kusakabe Youichi /sage/19 wrote:

>312ペイジと314ペイジに書いてありますね。
>K&R2版の:)

314ペイジと316ペイジでは?
K&R2版の:)
0021デフォルトの名無しさんNGNG
sageクサあらわる
0022Kusakabe YouichiNGNG
In article >>21, デフォルトの名無しさん/sage/21 wrote:
> sageクサあらわる
すなおにアヒル本を読めばいいのにね:)
0023デフォルトの名無しさんNGNG
>>13
>そんなことしかしてないようじゃ

べつに1は、それしかしてないとは言ってないだろ。
0024あべだすNGNG
質問です

BMP画像からRGB値を取りだしたいのですが、
どうすればいいのでしょうか。
手もとの参考書には基礎的な事しか書いてなく、
どう考えても分かりませんでした。
0025デフォルトの名無しさんNGNG
>>23
もともと、自分の同類を卑下した書き込みなんだからいいっしょ。
そこまで問い詰めなくても。
障害者が障害者を馬鹿にした発言をするのと同じ思考。
0026デフォルトの名無しさんNGNG
>>24
猫でもわかるに、ビットマップがどうたらって章があるけど、
これじゃいかんの?
http://www.kumei.ne.jp/c_lang/index_sdk2.html
0027デフォルトの名無しさんNGNG
>24 簡単な方法は 画面に表示してから ビクセルを読み出すとか
0028デフォルトの名無しさんNGNG
>>27
ネタだよね?
0029Kusakabe Youichi NGNG
In article >>24, あべだす//24 wrote:

>BMP画像からRGB値を取りだしたいのですが、
>どうすればいいのでしょうか。

Windowsで一般的に扱われる拡張子BMPの画像はDIBと呼ばれます。
DIBのRGB表現は色深度によってインデクスドカラーとマスクドカラーに分けられます。
16色や256色と呼ばれるのが前者、ハイカラー、フルカラーと呼ばれるのは後者です。
この両者は色データの表現方法が違うので、RGB値を取り出す方法も違ってきます。
まずはDIBのファイルヘッダ情報を解析するところからはじめてはどうでしょうか?
0030デフォルトの名無しさんNGNG
>>28
いや、RLE圧縮とかもあるし、オフスクリーンに展開するというのは普通の方
法じゃないか? たぶん1ピクセルだけ取り出して終りってわけでもないだろう
し。
0031デフォルトの名無しさんNGNG
>>24
ここじゃダメなのか?
http://www.sm.rim.or.jp/~shishido/windows.html
003228NGNG
>>30
「オフスクリーンに展開するというのは普通」だね。
0033Kusakabe YouichiNGNG
In article >>32, 28/sage/32 wrote:

>「オフスクリーンに展開するというのは普通」だね。

言葉尻をとった無意味な書き込みはやめたほうがいいのでは?
もっと内容のある情報を共有しましょう:)
003432NGNG
>>33
>言葉尻をとった無意味な書き込みはやめたほうがいいのでは?

話の流れを読まずに無意味な書き込みはやめたほうがいいのでは?

>>27「画面に表示してから」に対して
>>30「オフスクリーンに展開するというのは普通」
と書いたから、>>32「だね。」と同意したまで。
よく読め。

#つーか、その名前やめれや。
0035名無しさん@お腹いっぱい。NGNG
実際、Cで開発してるときassertを使うことってあるんでしょうか?

林晴比古の本は良くないって本当なの?
0036デフォルトの名無しさんNGNG
assert使うよ。
0037デフォルトの名無しさんNGNG
mainが700行近くあるプログラムを見たんだけど、みんなそんなもん?
0038デフォルトの名無しさんNGNG
腐れプログラムはそんなもんだ。
0039デフォルトの名無しさんNGNG
>>37
それはおかしくない?
0040デフォルトの名無しさんNGNG
じゃあ、普通はどんなくらいで済むのかと聞きたい。
0041デフォルトの名無しさん NGNG
逆に isSuccess とか何気ない名前で
1000行位かましたった方が効果的
0042デフォルトの名無しさんNGNG
林晴比古最高だよ。
0043デフォルトの名無しさんNGNG
日下部って人が
「作ってわかるC〜」だったかの著者だったとは・・・
あんなんでも本が出せるのか
0044デフォルトの名無しさんNGNG
林破留非故は最悪です。
0045デフォルトの名無しさんNGNG
まもなく降臨
004639NGNG
>>40
漏れは現場経験ないし、自分で書く時は多くても100行ぐらいだから
700行なんて異常だと思ったんだけど…。
現場じゃ当たり前なのかな?
0047デフォルトの名無しさんNGNG
世の中には常軌を逸したソースというのが結構あるのだ。
0048デフォルトの名無しさんNGNG
>>46
世の中にはさ、なんつーか常識じゃ考えられないソースを
書く人もいるわけよ
0049デフォルトの名無しさんNGNG
>>43
本物はもう少し偏屈で根性の曲がった性悪で卑屈な人です。
0050Kusakabe YouichiNGNG
In article >>22, Kusakabe Youichi/22 <[email protected]> wrote:

> In article >>21, デフォルトの名無しさん/sage/21 wrote:
> > sageクサあらわる
> すなおにアヒル本を読めばいいのにね:)

それはどんな本ですか?
0051Kusakabe YouichiNGNG
In article >>29, Kusakabe Youichi /sage/29 wrote:
> まずはDIBのファイルヘッダ情報を解析するところからはじめてはどうでしょうか?

ダウト
0052Kusakabe YouichiNGNG
In article >>33, Kusakabe Youichi/sage/33 wrote:
> >「オフスクリーンに展開するというのは普通」だね。
>
> 言葉尻をとった無意味な書き込みはやめたほうがいいのでは?
> もっと内容のある情報を共有しましょう:)

「共有」してどうする:)
0053デフォルトの名無しさんNGNG
( ´・ω・)ショボーン
0054デフォルトの名無しさんNGNG
糞壁!
文句ばっか言ってないでヤホーの掲示板で
困ってる初心者に教えにいってやれよ
0055デフォルトの名無しさんNGNG
クッサカベさん。奥さんは未だマゾですか?
0056デフォルトの名無しさんNGNG
>>50
>> すなおにアヒル本を読めばいいのにね:)
>
>それはどんな本ですか?

ログくらい読めよ。>日下部
人には本買えとか読めとか言ってるくせに。
0057名無しさん@お腹いっぱい。NGNG
実際のプログラムで、assertの使い時とは?
0058デフォルトの名無しさんNGNG
>>57
引数で、範囲外の値だとかNULLは処理しないのにNULLが渡されたときとか。
配列の値がソートされているはずなのにされてないとか、プログラム内部の
データがおかしいとき。

ファイルとか、キー入力のような外部からのデータにはassert()は使わない。
0059デフォルトの名無しさんNGNG
今、3年ぶりぐらいにassert()の存在を思い出した……。
そういえばそんなのも有ったな。
活用した事が無い漏れって、DQN?
0060デフォルトの名無しさんNGNG
うーん assertで引っ掛けるのはデバック完了迄でしょう
0061デフォルトの名無しさんNGNG
必ずしもDQNとはいわないが、知っとくべきだろうな。
0062デフォルトの名無しさんNGNG
マクロ切ってデバッグビルド時にだけ有効にしとくのが常道。
0063Kusakabe YouichiNGNG
In article >>43, デフォルトの名無しさん/sage/43 wrote:

> 日下部って人が
> 「作ってわかるC〜」だったかの著者だったとは・・・
> あんなんでも本が出せるのか

買ってみればいいのに。
0064Kusakabe YouichiNGNG
In article >>54, デフォルトの名無しさん/sage/54 wrote:
> 文句ばっか言ってないでヤホーの掲示板で
> 困ってる初心者に教えにいってやれよ

ヤホー?
0065デフォルトの名無しさんNGNG
>>62
>マクロ切ってデバッグビルド時にだけ有効にしとくのが常道。

オレもそう思ってたけど、このまえ読んだ「達人プログラマ」には
リリースバージョンでも残しとけって書いてあった。
(ま、好き好きだと思うけど)
0066デフォルトの名無しさんNGNG
coreを取ることができない場合には助けになることがあるな。
0067 NGNG
ちょっとスレの志向と違うかもしれませんが、
最近公開されたQuake2のソースとか読みたいんですけど
膨大な数のソースファイル、関数を読むのを支援してくれるツールとかってなんかないでしょうか?
0068デフォルトの名無しさんNGNG
>>67

Visual C++
0069デフォルトの名無しさんNGNG
>>67

OSくらい示せよ
0070デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c2.html#0
↑の2.6のAで書かれている

struct name {
 int namelen;
 char namestr[MAXSIZE];
};

が「規格の厳密な解釈によると許されない」というのが
わかりません。構造体のメンバに配列はだめってこと?
0071デフォルトの名無しさんNGNG
>>70

マクロは使ってはならないということ。
0072 67NGNG
すまんっす。VC++です。linuxでも可です
007370NGNG
>>71
それは構造体のメンバだから?
それとも普通の配列宣言でもマクロはだめ?
0074デフォルトの名無しさんNGNG
>>73
マクロ使うのはOK。
struct a {
int namelen;
char namestr[10];
};
struct b {
int namelen;
char namestr[20];
};
のとき、offsetof(struct a, namestr) == offsetof(struct b, namestr)である
保証がないということ。C99では配列の長さを変数にした場合や省略した場合、
struct c {
int namelen;
char namestr[namelen + 1];
};
struct d {
int namelen;
char namestr[];
};
において、offsetof(struct c, namestr) == offsetof(struct d, namestr)となる
ことが保証されてる。
0075Kusakabe YouichiNGNG
In article >>70, デフォルトの名無しさん/sage/70 wrote:

> http://www.catnet.ne.jp/kouno/c_faq/c2.html#0
> ↑の2.6のAで書かれている
> struct name {
>  int namelen;
>  char namestr[MAXSIZE];
> };
> が「規格の厳密な解釈によると許されない」というのが
> わかりません。構造体のメンバに配列はだめってこと?

その構造体自体は何も問題ないですね。

そうではなく、[1]の一番小さいのだけとって「かぶせて」使うのと同じように、
mallocとかでその構造体のsizeof分だけとるのではなくて、それより小さくとった
ものに「かぶせて」(もちろんnamestrに書くときにははみ出さないように気をつけて)
使うことが問題あるということでは?
0076デフォルトの名無しさんNGNG
>>67
http://www.sapid.org/index-ja.html
007770NGNG
>>74
古い規格では構造体内の配列のサイズが違うと、構造体内でのアドレスのオフセット
が同じである保証が無いということですね。

>>75
凄く解りやすい。納得。
本物ですか?(藁
0078デフォルトの名無しさんNGNG
激しく良スレ化 age
0079デフォルトの名無しさんNGNG
>>77
> 古い規格では構造体内の配列のサイズが違うと、構造体内でのアドレスのオフセット
> が同じである保証が無いということですね。
C99でも配列のサイズが定数の場合は保証されません。
保証されるのは、新しく導入された可変長配列を使った場合だけ。
0080デフォルトの名無しさんNGNG
>>79
保障されないことによって不具合が生じるコードは
例えばどんなものですか?
008170NGNG
>>79
どもです。
オフセットが保証されないってことは、仮想的に宣言した配列でかぶせるという
行為自体が危険ですね。

標準規格の変遷にちょっと興味が出てしまいました。
詳しいサイトとか無いでしょうかね。
できれば日本語(^^;
008270NGNG
>>80
こういう使い方がマズイということじゃないかな。

struct a{
 int namelen;
 char namestr[10];
};

struct a{
 int namelen;
 char namestr[20];
};

foo()
{
 struct a *pa;
 struct b *pb;

 pa = malloc(sizeof(struct a));

 /* pa->namestr[] に値をセット*/

 pb = (struct b)pa;

/* pb->namestr[] の値を参照*/
}
008370NGNG
>>82
訂正です

誤)pb = (struct b)pa;

正)pb = (struct b*)pa;
0084デフォルトの名無しさんNGNG
>>80
下のようなコードを書く際、bar()を呼んでもhogeと表示される保証がないという
こと。俺はhogeと表示されない処理系は見たこと無いし、
struct sockaddr_in sin; して bind(s, (struct sockaddr *)&sin...)すら
規格では保証されないことなるのであまりこだわってもしょうがないとも思う。

#define MAXSIZE 1024
struct name {
int namelen;
char namestr[MAXSIZE];
};
void foo(struct name *np)
{
printf("%s\n", np->namestr);
}
void bar()
{
struct my_name {
int namelen;
char namestr[5]; /* 5で充分 */
} n = { 4, "hoge" };
foo(&n);
}
008570NGNG
そういえば、昔参加したプロジェクトでデータを
こんな感じに宣言してたことがあった。(変数名は適当)

#define DATA_HEAD \
 int id; \
 void *next; \
 void *prev; \
 int size; \

typedef struct {
 DATA_HEAD
 data[DATASIZE1];
} DATA1;

typedef struct {
 DATA_HEAD
 data[DATASIZE2];
} DATA2;


今おもうとC言語で「継承」を実装しようと考えられた結果
なんだろうけど、ANSI的には保証外のコードということにな
りますね。
もちろんそのプロジェクトのプログラムは問題なく動いて
いましたが(^^;
008670NGNG
あ、でも。ちゃんとキャストを適切に行っていれば>>85のコードも
規格上問題ないコードか。
0087デフォルトの名無しさんNGNG
手続き型の言語って要するになにが特徴なのでしょうか。教えてください。
0088デフォルトの名無しさんNGNG
ローカル変数
0089デフォルトの名無しさんNGNG
|  ___________ |
| |  _________. | |
| |   | 故・糞壁を斬る! | | |
| |   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | 1.マ板  ∧ ∧ .,,  < 粘着にかけては世界一だった!
| | 2.ム板 (,, ゚Д゚)/ビシッ \__________________
| |.  :__(__つ__     | |
| |  | ギコ猫大助教授 |   ||   オオー
|   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  |        サスガ!
|_____________|
0090便乗NGNG
|  ___________ |
| |  _________. | |
| |   | 故・糞壁を斬る! | | |
| |   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | 1.マ板  ∧ ∧ .,,  < 粘着にかけては世界一だった!
| | 2.ム板 (,, ゚Д゚)/ビシッ \__________________
| |.  :__(__つ__     | |
| |  | ギコ猫大助教授 |   ||   オオー
|   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  |        サスガ!
|_____________|
0091デフォルトの名無しさんNGNG
クサカベがお料理板に住み着いてる・・・・・・
http://cheese.2ch.net/cook/
0092Kusakabe YouichiNGNG
In article >>91, デフォルトの名無しさん/sage/91 wrote:

> クサカベがお料理板に住み着いてる・・・・・・
> http://cheese.2ch.net/cook/

ここで宣伝するともっと客がくるとでも思ったのですか? :)
0093デフォルトの名無しさんNGNG
↑ コイツ何必死になってるの? (^_^;
0094デフォルトの名無しさんNGNG
相変わらず薄っぺらい人だね
0095デフォルトの名無しさんNGNG
お料理板ってマターリしててほんと2chの中でもかなりいい板だったのに、、、、ご愁傷様。
0096Kusakabe YouichiNGNG
In article >>93, デフォルトの名無しさん/sage/93 wrote:

> ↑ コイツ何必死になってるの?

何か「必死になっている」ことにしたいらしい:)
0097Kusakabe YouichiNGNG
In article >>94, デフォルトの名無しさん/94 wrote:

> 相変わらず薄っぺらい人だ

「ということにしたい」
0098デフォルトの名無しさんNGNG
宣伝とか客とかわけわからん。
これがホンモノのデンパってやつ?
0099デフォルトの名無しさんNGNG
おこってるおこってる :-)
0100デフォルトの名無しさんNGNG
>96 名前:Kusakabe Youichi :01/12/30 07:30
>In article >>93, デフォルトの名無しさん/sage/93 wrote:

>> ↑ コイツ何必死になってるの?

>何か「必死になっている」ことにしたいらしい:)


>97 名前:Kusakabe Youichi :01/12/30 07:30
>In article >>94, デフォルトの名無しさん/94 wrote:

>> 相変わらず薄っぺらい人だ

>「ということにしたい」

馬鹿?
0101Kusakabe YouichiNGNG
In article >>98, デフォルトの名無しさん/sage/98 wrote:

> 宣伝とか客とかわけわからん。
> これがホンモノの(I筑殃澆辰討笋ト?

ってことにすればごまかせるとも思ってるのかな? :)
■ このスレッドは過去ログ倉庫に格納されています