【独習C】本を読んで質問【独習C】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラムを本だけで勉強しているときに、
その本の内容が分からないときがあります。
そのとき、この本の何ページのどの部分が分からないと書き込むと、
答える側もその本を持っていれば伝えやすいと思いました。

ちなみにこのスレは【独習C】を利用。


早速分からないのですが、475ページの簡単な電子電話帳のプログラムの中の、
関数enterで、if(!*names[loc]) break;とあるのですが、ここで*をつける理由は何ですか?
22gets:2005/04/06(水) 13:12:22
names配列のloc+1番目のアドレスが指す先のデータがNULLでなければbreak
3从*・ 。.・) ◆SayuminPM. :2005/04/06(水) 13:12:47 BE:30405233-
3ちしげ3ゆ3様が電光石火の3ゲットなの!
                         >>1番かわいいのはさゆなの!
                    ノノハヽヽ〃ノハヾ /) >>2じ本はハゲすぎなの!
  後>>10は落ち目すぎなの! ∩*・ 。.・)从*・ 。.・)/ミ
                 〃ノハヾノノハヽヽノノハヽヽつ  い>>4川は黒すぎなの!
>>9ちもフケすぎなの!⊂(。.・从(・ 。.・*∩ノノノハ 。.・)ノハヽ
              ((  (\ゝノノノハノハ〃ハ v)っ彡*・ 。.・)
>>8やはフケすぎなの! ⊂`ヽ从*・ 。.・)・ 。.・))ノノノハヽつ ))>>5んのは顔ふくれすぎなの!
大の大人が>>7っちとか(プ⊂\  ⊂ )  _つ从*・ 。.・)
                   (/( /∪∪ヽ)ヽ)/ U  つ モー>>6すは売れなさすぎなの!
                   ∪ ̄(/ ̄\) ゝし'⌒∪              

              >>11-1000さゆのかわいさの前にひれ伏すの!
4デフォルトの名無しさん:2005/04/06(水) 13:17:48
( ´,_ゝ`)プッ
5デフォルトの名無しさん:2005/04/06(水) 13:18:38
>>2
何で*を付ける必要があるのですか?
namesはもともと配列なので、付ける必要は無いと思うのですが・・・。
62gets:2005/04/06(水) 13:23:55
>>5
独習本なのになぜ独習しないのか
7デフォルトの名無しさん:2005/04/06(水) 13:29:11
>>6
自分ではしてるつもりなんですが、さっぱり分からないです。
82gets:2005/04/06(水) 13:33:16
!names[loc]ならそこに入ってるデータで
*names[loc]したらそこに入ってるデータをポインタとして指している先のデータでしょ

俺もよくわかんね
9デフォルトの名無しさん:2005/04/06(水) 13:47:59
>>8
このプログラムだと結局*names[loc]はどこを指しているのですか?
10デフォルトの名無しさん:2005/04/06(水) 13:48:40
>>8
このプログラムだと結局*names[loc]はどこを指しているのですか?
11>>8:2005/04/06(水) 13:50:23
>>8
このプログラムだと結局*names[loc]はどこを指しているのですか?
12デフォルトの名無しさん:2005/04/06(水) 13:51:34
>>1
そもそもnamesはどういう宣言をしているんだ?
独習C持っていないからそこが知りたい。
13デフォルトの名無しさん:2005/04/06(水) 14:46:26
読んでわからないようなカスな本は捨ててしまえ。
14デフォルトの名無しさん:2005/04/06(水) 14:50:08
フォースを使え!身体で感じるのだ!
15デフォルトの名無しさん:2005/04/06(水) 15:27:19
>>5
*を付ける理由はnames[loc]ごとに確認したいからでは?
names全体として確認したいのあれば、付ける必要が無い。


と思う・・・。
16デフォルトの名無しさん:2005/04/07(木) 02:20:31
*names[loc] -> *(names[loc]) -> names[loc][0] -> loc番目の文字列の先頭の文字。
if(*names[loc])はナル文字が入っていた場合false。
!が付けばナル文字が入っていた場合true。
んで、getsで文字列を読み込んだ場合は改行文字がナル文字に置換される。
改行だけ読み込んだ場合にはif文が実行されてbreak

じゃねーの?
171:2005/04/07(木) 04:05:14
>>15-16
有難うございます。無事解決しました。
1813:2005/04/07(木) 13:04:48
>>17
他人が読んで理解するのに苦労するような、
オナニーなコードを平気で例題に使うダメな本は捨てろ、マジで。

もしプロのプログラマなら、
if('\0' == names[loc][0]) break;

if(!*names[loc]) break;
のように書いたら上司にグーで殴られるぞ。
そんなトリッキーなコードを仕事で書くな、遊びじゃないんだ真面目にやれ、と。
19デフォルトの名無しさん:2005/04/07(木) 14:38:08
へえ、それがトリッキーなんだ
20デフォルトの名無しさん:2005/04/07(木) 16:30:38
もしプロのプログラマなら、
if('\0' == names[loc][0]) {
break;
}

if('\0' == names[loc][0]) break;
のように書いたら上司にグーで殴られるぞ。
そんなトリッキーなコードを仕事で書くな、遊びじゃないんだ真面目にやれ、と。
21デフォルトの名無しさん:2005/04/07(木) 19:20:40
( ゚д゚)
22デフォルトの名無しさん:2005/04/07(木) 19:30:37
if( !**( names + loc ) ) breakl;
23デフォルトの名無しさん:2005/04/07(木) 19:45:07
>>18
そもそもプロのプログラマは'\0' == names[loc][0]と書かない。
names[loc][0] == '\0'と書け。

http://www.kouno.jp/home/c_faq/c17.html#4
24デフォルトの名無しさん:2005/04/07(木) 23:28:51
>>19
トリッキーだよ。

names[loc][0]

*names[loc]
で同じコードが生成されることと、
Cでは0が偽で0以外が真と定義されていること、
この2つを利用しているからね。

とくに後者は型を無視していて酷いね。

>>20
それは賛否両論あるけど、
一行で済む場合は、いちいち中カッコを書いたら、無駄に行数が増えて読みにくくなるよ。
まさかbreakの前に何か書き足す時に、中カッコを付けない人はいない・・・いるかもな。

>>23
それも賛否両論だね。
今時のコンパイラは警告出すしね。

ただ、条件文で代入まで一緒にやるような行儀の悪いコードの保守をしてると、困るんですよ。
ついでに両辺が変数だったらどうするかって? if(IS_SAME(a, b)) って書くのさ。
25デフォルトの名無しさん:2005/04/07(木) 23:49:44
レベル低すぎ
26デフォルトの名無しさん:2005/04/08(金) 01:04:30
names[]は、なんの、配列ですか。
ポインタがはいってるらしい?
たbん、char *names[]?

仮にそうだとすると、
namesのloc番目のindexにchar *へのポインタが入ってるので

(!*names[loc])は

仮に
names[loc]にまともなポインタが入ってて、
*でデリファレンス(言ってみたかっただけ)できた
とすると、

その場合に得られる、
文字列の開始アドレス位置の文字コードがnullchar'\0'でなければ

かな
27デフォルトの名無しさん:2005/04/08(金) 01:08:08
...訂正
- nullchar'\0'でなければ
+ nullchar なら

ねる。
28デフォルトの名無しさん:2005/04/08(金) 03:38:49
>>25
低いな〜と思うくらいでちょうどいい。

おれで
なければ
にわかには
いじれない

じゃ困るんだよ。
29デフォルトの名無しさん:2005/04/09(土) 22:52:37
低オナニー児か・・・

>>25とは趣味が合いそうだ
30デフォルトの名無しさん:2005/05/25(水) 13:00:51
ところで、グーパンチしてくる上司はどうなんだ?
案外普通にいたりするもんなのか?
31デフォルトの名無しさん:2005/07/14(木) 19:42:10
このスレまだあんの?
32こうろぎ:2005/07/22(金) 17:39:50
独習C第版で分からない事があります。
誰か教えて下さい。
33デフォルトの名無しさん:2005/07/23(土) 09:43:59
最初に何がわからない書いてくれないと答えられない。
34デフォルトの名無しさん:2005/08/17(水) 22:08:43
hoshu
35名無しさん:2005/08/17(水) 22:19:14
あのぅ、C言語でゲーム作れますか。
36デフォルトの名無しさん:2005/08/17(水) 22:39:11
>>35
作れるがスレ違い.おまえさんが想定するゲームの種類にもよるが,阿呆でもそれなりに
ゲームっぽいものを作れるのだと自己満足に浸りたいならHSPあたりでもいじくってたら
よかろう.
37名無しさん:2005/08/17(水) 22:46:51
わかりました。
38デフォルトの名無しさん:2005/08/24(水) 12:58:49
>>1
そんなページねぇーーーーーーーーーーよ
39デフォルトの名無しさん:2005/08/25(木) 21:49:15
>>38
>>1 は 第3版の apdC-129.c について問うているはずなんだけど第何版みてるの?
40デフォルトの名無しさん:2005/08/28(日) 05:20:52
今日買ってきたよ。独習C。
初めてプログラムに触るのに、これはまずかったかもわからんね。
もうちょっと簡単そうなの買えば良かった。今は反省している。
41デフォルトの名無しさん:2005/08/28(日) 23:38:22
>>40
いや、これはかなりいい書籍だと思うよ。
確かに、リトルエンディアンだのCPUについてのちょっとした知識がさも知っているかのように
扱われているけどそういうことはちょこっと調べればわかること。
ほとんどの説明はわかりやすくて、プログラマのミスして覚えてしまいやすいことなど、効率的なANSI-Cコーディングスタイルを
身に付けるには最適な書籍だと思う。こういうのはまとまった時間にやるのがいいかも。
42デフォルトの名無しさん:2005/08/29(月) 04:56:41
>>41
そうなのか。たしかにちょっと検索すればいいだけだもんな。
一冊の本で簡単にすませられるわけじゃないし、俺が甘かった。
これからまとまった時間になるので、勉強します。
43デフォルトの名無しさん:2005/08/29(月) 20:53:05
>>42
プログラミング自体がまったくの初めてということなら 高橋麻奈 の本
あたりが最初の一冊としては向いているかも知れんね。
>>41 も言うとおり、独習C はあとあと読み返して復習するにも良い
本だと思うよ。初歩の初歩を理解してからトライするってのもおすすめ。
44デフォルトの名無しさん:2005/09/18(日) 19:31:42
独習CでC言語の勉強始めたけど…
ファイルの入出力でつまずいてるorz

この書籍のポインタは大丈夫なのに…
こんなおれは変ですか?
45デフォルトの名無しさん:2005/09/18(日) 20:35:09
変じゃないよ。
ガンガレ
46デフォルトの名無しさん:2005/09/18(日) 23:01:11
よかった…
配列とポインタがむずいって言われてるから、
おれだけかと…

いろいろ調べてやってきます
ガンガレ言うてくれてありがとう
47デフォルトの名無しさん:2005/09/19(月) 10:08:27
猫でもわかるC言語入門と言う本をやってるのですが、スレタイの本も買いですか?
48デフォルトの名無しさん:2005/09/19(月) 17:01:45
暇を持て余しているのなら。
49デフォルトの名無しさん:2005/09/19(月) 17:04:26
ちゃんとした本見て後から猫を見るとすげーはしょっててuzeeeeeeeeeeeeeeeeeeeeeeeeeeeとオモタ
5047:2005/09/19(月) 21:08:26
>>48
仕事終わると暇な時間が出来るので買ってみます。

>>49
確かに猫見てると
今は覚えなくていい とか多いですね。
51デフォルトの名無しさん:2005/09/19(月) 23:46:40
CやC++には、とりあえず最初は知らなくてもいいものがある。
なかには、最後まで知らなくていいものもあるかもしれない。

初級者が陥りやすいのは、本に書いてあることをすべて理解しようとすること。
たいていの本は、重要さの順番ではなく、知らない事柄が説明なしで登場しない順番に書かれてる。
それによって、多くの人が挫折したり、実戦では役に立たないようなコードに頭を悩ませたりしてしまう。

プログラムを書くのに、
言語のすべての機能を使いこなして書かなければいけない、なんてことはない。
言語のすべての機能を知っていないと罠にはまることも多々あるけれども、それは初級では気にしないでいい。

よくわかんないけど、サンプルコードを真似してみた
よくわかんないけど、とりあえず動いてる
というのは、実に恐ろしいことで、実戦では許されないことだけど、
学習段階で書いたプログラムを実戦で使うわけではないので、
ある程度プログラムが書けるようになるまでは、
適当なプログラムのソースで使われている事柄だけ、本で勉強すればいい。

とりあえず知らなくていいこと
・ポインタのポインタ ← typedefを使え
・scanf関数の使い方 ← そんな危ない関数は使用禁止なので、覚えても無駄。ポインタの例題としては罠がお大杉。
・標準入力 ← 何が入ってくるかわからないものは初級者には難しいのでパスしてよい
・ファイル入出力 ← 入力データはソースコード上に、出力データはデバッガで確認しる。
52デフォルトの名無しさん:2005/09/20(火) 00:07:18
>>51
君が出版すればいい本になるぞ。
53デフォルトの名無しさん:2005/09/20(火) 10:06:23
>>51
挫折しかけてました。
でもレス読んでまたやる気が出てきました!
54デフォルトの名無しさん:2005/09/20(火) 11:19:20
肝心なことが書いてないのはストレスになる。
知りたいと思ったことがちゃんと書いてあるのが良い本。
ダメ本は良書の劣化コピーだったりする。
55デフォルトの名無しさん:2005/09/21(水) 10:23:10
とにかく基礎の終わりまでを挫折することなく導いてくれる本でなきゃね
56デフォルトの名無しさん:2005/09/21(水) 19:20:37
挫折したくなかったら、言語よりも先に、コンピュータの仕組みについて勉強することだ。
57デフォルトの名無しさん:2005/09/22(木) 04:04:56
>>51
scanf(strcpy...等の)関数が危ないというのは、たまに聞くのですが(スタックオーバーフロー?)
代わりに、通常はどういった関数を使用するのでしょう?
58デフォルトの名無しさん:2005/09/22(木) 04:17:52
>>57
それを>51に聞くのは筋違いと言うものだろう。
scanf()は単純に置き換えることはできないが、fgets()+sscanf()でほぼ同じ結果が得られる。
ただし、入力処理としてはそれでも完璧ではないので要注意。
strcpy()などは入力を伴うわけではないので充分注意して使えばいい。
これも、sprintf()などを使うことでより安全にすることもできる。
59デフォルトの名無しさん:2005/09/22(木) 04:41:39
>>58
>それを>51に聞くのは筋違いと言うものだろう。
スンマソ

ググれば色々と確かにhitするのですが、プロとかは
どうなのかなぁとか、おもつたのでした。(^^;
60デフォルトの名無しさん:2005/09/22(木) 05:33:45
>>51は日下部が本で言ってることそのまんまだな
61デフォルトの名無しさん:2005/09/22(木) 17:22:10
fseek(in, 0L, SEEK_END);
↑の0Lというのはlong 0って意味?
イチイチlongとか指定しないといけない理由は?
”0”だけだとなんか問題があるのだろうか?
62デフォルトの名無しさん:2005/09/22(木) 17:24:14
>>61 に追加
in=fopen(argv[1],"rb"

改訂版 P256の例2より
63デフォルトの名無しさん:2005/09/22(木) 21:00:38
>>61
そのとおりで0Lはlong型の0を表す。

fseekのプロトタイプがある(<stdio.h>をインクルードしている)のであれば、
Lはなくても暗黙の型変換がはたらくから無問題。
64デフォルトの名無しさん:2005/09/22(木) 21:03:48
>>63
ありがとうございましたm(__)m
6551:2005/09/23(金) 02:10:12
>>59
プロではないけど・・・

scanfを使うような機会がないんですよ。
だからscanfはスルーしていいよ、というわけです。

strcpyは使うのが難しいのです。
strcpyがコピー先の大きさを考慮してくれないので、
プログラムを書く人が考慮してやらないといけなく、
それをミスすることが少なくないので、使わないほうがいいのです。

strncpyを始め、いくつかのコピー先の大きさを考慮したものがありますが、
バッファの大きさを管理するのが面倒でミスしやすくなります。
したがって、CではなくC++の、何らかの文字列クラスを使う、というのがよいと思います。

文字列クラスを使うのに必要最小限のことだけC++を学び、使うのも悪くはないですよ。

>>60
ヘミ猫と一緒にされたくはないぞ。

>>61-63
今どきのCコンパイラは警告を出してくれるし、C++ならエラーになるけど、
昔はプロトタイプ宣言がないと、適当な型でスタックに積んでしまう仕様だった。
んで、longとintのサイズが違う環境だと、色々と悲惨なことが起きていたのでした。
6659:2005/09/23(金) 17:43:02
>>65
わかりやすいレスありがとうございます。m(__)m
2chの方々はアグレッシブな方が多いので打たれ弱い私は
枕を濡らしいました。(^^;

>文字列クラスを使うのに必要最小限のことだけC++を学び、使うのも悪くはないですよ。
ポインタまわりの書籍を、一冊こなした後に、是非学んでみたいと思います。
67デフォルトの名無しさん:2005/09/23(金) 18:16:11
*BSDだとstrlcpyというのがあるような
http://www.freebsd.org/cgi/man.cgi?query=strlcpy
68デフォルトの名無しさん:2005/09/23(金) 18:22:47
>>67
却って混乱を招くからお勧めしない。
69デフォルトの名無しさん:2005/09/23(金) 18:50:46
p -> count;
m = (a > b) ? a : b;
みたいな古い?(K&Rにでてきそうな)を、理解できるようになるには
独習Cでは限界があるような。。。。

最近Cの勉強を始めた人たちは、古いソースを読むときとかって
どうしてるのだろう?
70デフォルトの名無しさん:2005/09/23(金) 21:06:33
>>69
いきなり p -> count; と書かれても
何が言いたいのか意味不明
71デフォルトの名無しさん:2005/09/24(土) 01:59:31
>>69
(誤)理解できる
(正)知るよう

なので許してくんなせ >>70
72デフォルトの名無しさん:2005/09/24(土) 02:01:20
■■■■■■■■■■■■■■■■
■                     ■  違う板にコピペすると、四角の枠の中に
■                     ■  メッセージとURLが現れる不思議な絵。
■                     ■
■                     ■  (その仕組みがリンク先に書いてある)
■                     ■
■                     ■  この原理を応用すると、まったく新しい
■                     ■  コピペが作れる予感。
■■■■■■■■■■■■■■■■
73デフォルトの名無しさん:2005/09/24(土) 02:15:14
>>71
それでも意味不明。
74デフォルトの名無しさん:2005/09/24(土) 03:31:48
>>73
独習CってANCI標準に適応してたとおも。
で、
->(何演算子っていうのかは知らんw)とか三項演算子(?だっけ)に
関する記載ってなかったような気がするなぁ。。。
っていううる覚えの発言なのだったのだよぉ
75デフォルトの名無しさん:2005/09/24(土) 05:36:27
>>74
それ全部最後の方だ
そこ行く前に挫折したんだな
76デフォルトの名無しさん:2005/09/24(土) 18:38:35
>>75
そうだったかもなw
プハー ○o。.(-。-)y-~~
77デフォルトの名無しさん:2005/09/30(金) 19:00:42
      /\
    /   \  今このとき,モナーは立ち上がる―
   /∧_∧ \    
 /( ´∀`)  /\
 \(    ) /  \    
   \    /       \
    \/         \
          ∧∧∧∧\
         (  ´/) ))ヽ∧
         /   /  / ´∀) ∧∧
       ○(   イ○  (   ,つ, ,゚Д゚)  
       /ヽ  )) ヽ  )ヽ )と  , イ
       (_/(_/(_/(_/ノ(_/⊂ノ> )J
   / ̄Y ̄`|/ ̄^Y ̄ヽ/ ̄ ̄Y
78デフォルトの名無しさん:2005/10/01(土) 04:24:52
>>74
>->(何演算子っていうのかは
アロー演算子じゃ炉?
以下が3項演算子
(a > b) ? a : b
79デフォルトの名無しさん:2005/10/01(土) 18:21:35
? : の正式名称は条件演算子。
単項、2項演算子は数あれど3項演算子はこれ1つしかないから3項演算子と言っても確かに通じるけどさ。
80デフォルトの名無しさん:2005/10/01(土) 20:15:30
独習c++ 337ページの

void queue::store(int i){
list *item;
item = new queue;

if(!item){
cout << "リストは空です\n";
return 0;
}
item->num = i;

if(tail) tail->next = item;
tail = item;
item->next = NULL;
if(!head)head = tail;
}

これでどうしてキュー構造ができるのかわかりません ><
81デフォルトの名無しさん:2005/10/01(土) 20:44:28
>>80
なにそのコード。

そんな糞なコードを教える本なんて捨ててしまえ。
82デフォルトの名無しさん:2005/10/02(日) 02:22:09
どうしてこの本は
推薦図書/必読書のためのスレッド PART26
http://pc8.2ch.net/test/read.cgi/tech/1126785299/
に全然紹介されてないの?今日買ってきたのに悲しい。
83デフォルトの名無しさん:2005/10/02(日) 04:36:22
いちいち独習なんていうDQNなタイトルと、我流な内容で、地雷本だから。

読者が独習するのではなく、筆者が独習して書いた、ってことだと理解するよ。
読者が独習するのは、当たり前のことだからな。
84デフォルトの名無しさん:2005/10/02(日) 06:11:32
>>82
ページの左上が髪の毛くっついてるように見えるから
85デフォルトの名無しさん:2005/10/08(土) 22:07:22
なにこのprintfのフォーマット指定子のダラダラと長い説明
呼んでて眠くなってきた
86デフォルトの名無しさん:2005/11/07(月) 21:30:56
図書カード入力プログラムなどで、いくつかの入力関数が機能しない
というか完全無視されて次の命令文に移って激しく困っている
特に深くネストされたループ構文内のgetsやfgetsなどは重症で
scanfにすれば動いたりする
また構造体最初のch10-01.cのch1文字入力もダメで、整数入力の手前(つまり最初)に
持ってくれば大丈夫だったりと、もう意味不明
これコンパイラが悪いの?
87デフォルトの名無しさん:2005/11/09(水) 14:09:42
>>86
お前さんの文章が意味不明。
88デフォルトの名無しさん:2005/11/09(水) 17:15:41
>>86
scanfの原則空白や改行文字を読み飛ばす仕様が関係すると見た。
89デフォルトの名無しさん:2005/11/29(火) 17:43:21
一応保守しておこうか
90デフォルトの名無しさん:2005/12/03(土) 02:30:13
C++のコンパイラだとその手の不具合は当たり前
91デフォルトの名無しさん:2006/01/15(日) 00:17:54
独習C、大学で買わされたのですが、結局なにも分かりません・・・。
時間かけてない自分も悪いのですが。
4年で研究のときに使いますし、就職活動なんかでも自信を持ちたいので、
なにか独習Cをやる前の良書ありませんか?
これさえ分かればとりあえず事足りる、みたいな最低限の書籍なんかあれば見てみたいです。

C言語の本のスレがあれば、そちらを教えていただいても構いません。
92デフォルトの名無しさん:2006/01/15(日) 04:29:16
言語の前に、CPUの仕組みについて、勉強すべきだろう。
93デフォルトの名無しさん:2006/01/15(日) 14:33:20
>>91
つ『プログラムは何故動くのか』
つ『やさしいC』

俺は大学の講義+『Cの絵本』と『猫でもわかる〜』を使ったが、猫の方は2ch的にはお勧めしない人が多いらしいので、俺も薦めることはしない。
とりあえず、スレ違いなのでこの辺で。

スレ住民>
スレ汚しスマソ。
94デフォルトの名無しさん:2006/01/15(日) 20:36:53
>>91
C言語の本だけじゃないけど推薦書のスレならある
http://pc8.2ch.net/test/read.cgi/tech/1133629787/
http://pc8.2ch.net/test/read.cgi/tech/1090723093/
95デフォルトの名無しさん:2006/01/16(月) 16:43:12
独習C第3版のP305
10.4のビットフィールド例2(ch10-11.c)について

「コレにより作成されるディスクファイルは、100バイトを越えることはありません」
とあるけど、実際は400バイトのファイルが出来た。
どういうことでしょう?


struct telemetry {
unsigned fuel:1;
unsigned radio:1;
unsigned tv: 1;
unsigned water:1;
unsigned food:1;
unsigned waste:1;
} flt_recd;
↑コレを100回ファイルに書き込むプログラム。
本持ってない人には分かりにくくて申し訳ない
96デフォルトの名無しさん:2006/01/16(月) 17:01:43
>>95
その本持ってないからどんな説明してあるのか知らんが、コンパイルスイッチの問題。
データアラインメントが DW になってるんでないか?
9796:2006/01/16(月) 18:29:55
追加
コンパイルオプションは今のままで、100回ファイル書き込み部分の直前に、
       printf("struct size : %d\n", sizeof(flt_recd));
って入れて、再ビルド&実行してみ?

4 って表示されると思う。
9895:2006/01/16(月) 19:00:11
>>96
レスありがとうございます。
確かに>>97の通り struct size : 4 となりました。
原因は自分なりに理解できましたが、コンパイルスイッチについては検索してもよく分からずじまいでした。
変更の仕方などヒント有ればお願いしたいです。暇な時で構いませんので

ちなみにコンパイラはbcc5.5です。
99デフォルトの名無しさん:2006/01/16(月) 19:19:10
>>98
-a1
10095:2006/01/16(月) 20:21:59
>>99
それで出来ました
どうもありがとうございます。
101デフォルトの名無しさん:2006/01/16(月) 22:03:16
>>99
bcc って、コマンドラインからビルド実行するのか ・・・ 今となっては懐かしいな。
ともあれ、身代わりレス さんくすこ。
しかし【独習C】ってのは、読んだことないけど不親切な本だな。 win の世界では、
構造体をファイル入出力したときのバイト数を云々するときには、データアラインメントに
ついての言及は避けて通れない筈だが ・・・
102デフォルトの名無しさん:2006/01/16(月) 22:24:05
たぶん註が付いているとは思うけど。
103デフォルトの名無しさん:2006/01/16(月) 22:43:03
>>100
素人質問者を装って 100 Get する、ニクい香具師。 やられたゼ。
104デフォルトの名無しさん:2006/01/19(木) 05:32:33
コンパイラの引数のスイッチでやると、トラブルになりやすい。

コンパイラに依存してしまうが、
ヘッダファイルの、その構造体を宣言するところだけを、
#pragma
を使って設定を変更すべし。
105デフォルトの名無しさん:2006/01/26(木) 15:42:57
/*独習Cで独習し終わったので、記念かきこ。
いずれK&R読むかもしれないけど、次は独習C++か・・・

何度かここではお世話になったので、ありがとう
*/
106デフォルトの名無しさん:2006/02/08(水) 21:32:11
その気持ちのまま>>82
独習Cを激しくプッシュしてきてくれ
107デフォルトの名無しさん:2006/03/01(水) 13:43:10
独習JAVA第3版の317ページ、問2のことで質問があります。
答えのソースを実行しても、Stackクラスを利用することができません。
ほかに何か設定が必要なのでしょうか?
コンパイラはEclipseのバージョン: 3.1.1で、
JDKは1.5.0_06です。
よろしくお願いします。
108デフォルトの名無しさん:2006/03/01(水) 13:48:06
import java.util.*;

class Task extends Thread {
 ResourceCoordinator rc;
 int id;
 public Task(ResourceCoordinator rc, int id) {
  this.rc = rc;
  this.id = id;
 }
 public void run() {
  try {
   // 無限ループを作成する
   while(true) {
    // リソースを取得する
    Resource r = rc.getResource();

    // リソースを使う
    int t = (int)(10000 * Math.random() + 1000);
    Thread.sleep(t);

    // リソースを解放する
    rc.releaseResource(r);

    // 次の作業をする前に休眠する
    Thread.sleep(8000);
   }
  }
  catch(Exception e) {
  }
 }
}
109デフォルトの名無しさん:2006/03/01(水) 13:49:12 BE:749763397-

class Resource {
 int id;

 public Resource(int id) {
  this.id = id;
 }

 public String toString() {
  return "" + id;
 }
}

class ResourceCoordinator {
 Stack resources = new Stack();

 public ResourceCoordinator() {
  for(int i = 0; i < 4; i++) {
   resources.push(new Resource(i));
  }
 }
110デフォルトの名無しさん:2006/03/01(水) 13:50:33 BE:416535757-

 public synchronized Resource getResource() {

  while(true) {

   // リソースが使用可能かチェックする
   if (!resources.empty()) {
    Resource r = (Resource)resources.pop();
    System.out.println("Get resource " + r);
    return r;
   }
  
   // 使用可能なリソースを待機する
   try {
    wait();
   }
   catch(InterruptedException ie) {
    ie.printStackTrace();
   }
  }
 }

111デフォルトの名無しさん:2006/03/01(水) 13:51:12 BE:142812634-
 public synchronized void releaseResource(Resource r) {
  // リソースをスタックにプッシュする
  System.out.println("Release resource " + r);
  resources.push(r);

  // 待機中のスレッドすべてに通知を送る
  notifyAll();
 }
}

class ResourcesTasks {
 public static void main(String args[]) {
  // リソースの調整役を作成する
  ResourceCoordinator rc = new ResourceCoordinator();

  // 作業を作成する
  for(int i = 0; i < 10; i++) {
   new Task(rc, i).start();
  }
 }
}


上記がソースファイルです。
112デフォルトの名無しさん:2006/03/01(水) 13:53:43 BE:666456678-
ウワ!!!
スレを間違えました。
orz

すみませんでした。
113デフォルトの名無しさん:2006/03/01(水) 14:26:20 BE:666456487-
ソースは別のスレに間違って書き込んでしまいました。
http://pc8.2ch.net/test/read.cgi/tech/1112760409/109-111
です。
114デフォルトの名無しさん:2006/03/01(水) 14:55:00
>>113
君は何をしたいのかね。
115デフォルトの名無しさん:2006/03/01(水) 14:59:59 BE:476040285-
>>114
すみません。
ことごとく誤爆の連発です・・・。
116デフォルトの名無しさん:2006/03/01(水) 19:37:51
少し寝ろw
117デフォルトの名無しさん:2006/03/11(土) 15:12:06
どじっこワロスw
>>107>>108はイイのか。

次スレ【独習C C++】本を読んで質問【独習Java】だなw
118デフォルトの名無しさん
ここって独習C++もいいんですか?
独習C++の12章の理解度チェックの問題4
の解答をコンパイルしてみたらエラーで動きません。
警告も出ています。

警告の内容は以下のとおりです
c:\一鉄\趣味\ゲーム作成\勉強\TeachYourselfC++\12-check-4.cpp(45) : warning C4541: 'typeid' が /GR- を使用したポリモーフィック型 'A' で使用されています; 動作結果は保証されません。
c:\一鉄\趣味\ゲーム作成\勉強\TeachYourselfC++\12-check-4.cpp(47) : (省略)
c:\一鉄\趣味\ゲーム作成\勉強\TeachYourselfC++\12-check-4.cpp(49) : (省略)

警告だけで、エラーではないのでコンパイルは出来ます。
ですが実行時になってからエラーが表示されます
それの内容は
This Application has requested the Runtime to terminate it in an unsual way.
Please contact the application's support tema for more information.

です。
いろいろためしてみると
myclassというクラスとそのクラス型のobjというオブジェクトがあったとすると
typeid(obj)は機能するのですが
typeid(myclass)は機能しません。

だれかどうすればいいか分かる方はいませんか?
長々とすいませんですた