掲示板

掲示板を置いてみました。ご自由に書き込んで下さい。
ただし、私は根性なしなので、閑古鳥が鳴いたり、荒れてきたと
思ったらとっとと閉鎖する可能性があります。


より新しい記事へ ← 500 件の投稿中 500件目〜451件目を表示 → より前の記事へ
表示件数: 件/頁 


450 Re^3: javaアプレット コメント数:  1件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/25 (土) 18:46
 http://member.nifty.ne.jp/maebashi/
> たとえば、human vs. computerで後手にした時に二手目で
> 問答無用で負けるとか、リバーシ(っていうのかな?)が
> めくれるときのアニメーションがおかしかったり。

すみません、うちの環境(IE5.5)で、Microsoft VMとJava Plug-in(1.4)の両方で試していますが、どちらも再現していません。

> ちなみに、私はWin2000 Opera6.05(ja)で動かしています。

OperaでJavaが動いているということは、JREがインストールされていて、IEもMicrosoft VMではなくJava Plug-inで動いているわけですよね。JREのバージョンはわかりますでしょうか。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


449 Re^2: javaアプレット コメント数:  10件
  xiu 2003/01/25 (土) 02:55
> # xiuさん、どんな現象が起きたのかを書かないと、
> # 誰も原因を推定できないかと・・・
ごもっともです。
ただ、以下のように明らかに変な動作をするもので
書かなくてもわかるかな〜とか思ったもので。
#このあたりから私の環境が原因っぽいんですが・・・

たとえば、human vs. computerで後手にした時に二手目で
問答無用で負けるとか、リバーシ(っていうのかな?)が
めくれるときのアニメーションがおかしかったり。

ちなみに、私はWin2000 Opera6.05(ja)で動かしています。
ためしにIE5.0でやってみてもアニメーションがおかしいという現象
が発生しました。2ゲーム目以降に出るようです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


448 Re: javaアプレット コメント数:  11件
  レプラコーン 2003/01/24 (金) 23:06
私の環境では特に変な動作みたいなものはなかったです。

# xiuさん、どんな現象が起きたのかを書かないと、
# 誰も原因を推定できないかと・・・
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


447 javaアプレット コメント数:  12件
  xiu 2003/01/24 (金) 21:56
javaアプレットのリバーシを動かしてみたんですけど、時々おかしな動作をします。これはこちらの環境が原因なのでしょうか・・・
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


446 Re^5: time関数で困ってます コメント数:  0件
  のぐー   | bxm06466@nifty.ne.jp 2003/01/24 (金) 04:51
 http://homepage1.nifty.com/nogue/
>time関数群(時刻に関係のある関数)のほとんどの使い方や意味が
> の載っているホームページです。

網羅的に知りたいのなら、それなりの資料をあたるべきです。
(1) JISのC言語規格 (JIS X 3010-1993)
(2) LSI-C86試食版のマニュアル(Vector等からダウンロード可能)
(3) その他、各社コンパイラのマニュアル
(4) その他、C言語ライブラリについて網羅的に書いてある本
(トッパンから「標準C言語ライブラリ」というそのものずばりの本が
出てたが、出版社が倒産したため現在入手困難。良い本だったのに…)
などをあたれば、たいてい載ってると思います。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


445 Re^4: time関数で困ってます コメント数:  1件
  linkru 2003/01/23 (木) 20:52
>  linkruさんが本当に疑問に思っているのは、「時刻を知りたいんだから、最初から何年何月何日という形式で返してくれればいいのに、なぜいったんtime_tを返してそれを変換させるなどという迂遠な方法を使うのだろう?」ということではないですか? (違ってたら教えてください)

 僕が教えてほしいのは前橋さんの言っていることも入るのですが
time関数群(時刻に関係のある関数)のほとんどの使い方や意味が
の載っているホームページです。前橋さんの言っているようなことも知りたいですし。ほかの時刻に関係ある関数のことも知りたいわけです。
そういう意味で言ったんですが。
わかりにくくてすいませんでした。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


444 Re^4: time関数で困ってます コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/23 (木) 19:37
 http://member.nifty.ne.jp/maebashi/
(続き)
 でも、ふたつの日付の前後比較とか、日付順ソートとか、ある瞬間からある瞬間までの経過時間の算出とかの用途では、何年何月何日の形式(struct tm型)よりもtime_tの方が便利です。よって、管理用にはtime_tを使い、人間に見せる直前にstruct tmに変換する、という方法が考えられます。

 ところで、一般に掲示板などで質問するときには「○○について教えて」ではなくて、「自分はこうだと思うのに、実際にはこうなっている。なぜ?」という聞き方じゃないと、答える方には「何がわからないのかがわからない」ものです。
 その辺のことについて、たいへんうまく書いてあるページを見つけたので紹介しておきます。

浮かぶ疑問符(「大西科学」より)
http://onisci.com/194.html

局所的に抜粋:
|「空はどうして青いの」がどうしていい質問ではないかというと、
| そこには「本来この色であるはずなのに」という視点が欠けて
| いるからである。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


443 Re^3: time関数で困ってます コメント数:  3件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/23 (木) 19:34
 http://member.nifty.ne.jp/maebashi/
 time_t型自体は、本田さんがおっしゃるように、たいていの環境でlong 型です。
 そして、その意味は、UNIX環境では1970年1月1日00:00:00からの経過秒数(UTC)です。time()で取得できるのはこれです。
 しかし、たとえば現在時刻を表示するプログラムでは、「2003年1月23日(木) 22:10:10」のように表示したいわけです。「1970年1月1日00:00:00からの経過秒数」から、それが何年何月何日何曜日何時何分何秒なのかを算出することは、不可能ではないですがかなり面倒です(うるう年もありますし)。その面倒なことを代わってやってくれるのが、gmtime()やlocaltime()です。さらに、一気に「Wed Jun 30 21:49:08 1993」まで変換してくれるのがctime()です。

 linkruさんが本当に疑問に思っているのは、「時刻を知りたいんだから、最初から何年何月何日という形式で返してくれればいいのに、なぜいったんtime_tを返してそれを変換させるなどという迂遠な方法を使うのだろう?」ということではないですか? (違ってたら教えてください)

文字数制限のため、以下、続く。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


442 Re^3: time関数で困ってます コメント数:  0件
  本多   | manybook@msc.biglobe.ne.jp 2003/01/23 (木) 08:27
> >何をしたいのがわからないのでなんとも言えませんが
>  なにをしたいかというと、time関数群のそれぞれの使い方
> そしてその意味、表し方、time_t型とは何かなどです。
これじゃ,何がしたいのかわかりませんねぇ。ただ知りたいだけですか?

time_t型などの型はHeader Fileに記述があります。

linuxとかcygwinを使っているのなら,Header Fileの多くは
/usr/include/というdirectoryの下にあります。

前橋さんが教えてくれたsiteや、man pageなどを見れば
time()関数について調べると、
#include <time.h>
という記述を見つけられると思います。

time_t型を知りたいなら、このdirectoryにあるtime.hを見れば、
必要な型が、どの様に宣言されているかわかります。

私の環境ではHeader Fileには、以下の様な依存関係があり、
time.h→sys/type.h→sys/types.h
time_t型をlong型に宣言しています
(time_tは、一般的にlongです)

他の関数もtime.hに宣言があるので、どんな関数があるのかは
Header Fileで眺めて、
気になる関数があったら、前橋さんの教えてくれたWEB siteか、
man pageで調べたらいいと思います。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


441 Re^2: time関数で困ってます コメント数:  5件
  linkru 2003/01/22 (水) 17:59
>何をしたいのがわからないのでなんとも言えませんが

 なにをしたいかというと、time関数群のそれぞれの使い方
そしてその意味、表し方、time_t型とは何かなどです。

ホームページを教えていただいてありがとうございました。
また、いいtime関数群のホームページがあったら教えてください
お願いします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


440 Re^2: Not Found コメント数:  0件
  レプラコーン 2003/01/22 (水) 16:38
> 美意識が許しませんか? (^^;
そうですね。私はある程度の統一感があったほうが見やすいと考えてます。

プログラムに例えると、
会社合併したソースを管理している感じ(スタイルが大幅に違う)というか、
自分が過去に良かれと思って作ったマクロが、
今見ると実は「とんでもマクロ」だった、のようなときの心境になるというか(^^;
# それをネタにして振り返る手もありですが、
# 如何せん私のサイトには何故か手厳しい突っ込みが多いので(笑)

> 「相互リンク」というもの
Webを巡回していていくつかのパターンに気がついたのですが、
大抵は「新入りですよろしくお願いします」とか、
あるいは単なる宣伝行為、それから一番多いのはお友達感覚みたいです。
いずれにしてもいきなり来て「相互しましょう」というのは一緒みたいですね。
# あとリンク返しみたいなものもありますね。

もしかしたら、自分が「いいなぁ」と思った人に
「認めてもらいたい」という願望のあらわれかもしれないです。

> そのままにした方が http://archive.org で探せる
あ、そうか! 気がつきませんでした。ありがとうございます。
# 私がWebアーカイブを全然生かしていないことがバレバレですね(^^;
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


439 Re: time関数で困ってます コメント数:  6件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/22 (水) 02:25
 http://member.nifty.ne.jp/maebashi/
> C言語のtime関数群がよくわからないのですが
> 何かいいホームページはないでしょうか?

 何をしたいのがわからないのでなんとも言えませんが、時刻が知りたければtime()→localtime()の連続技でよいのでは。
 とりあえずちょっと検索して、日本語マニュアルは見つけましたが...
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/ctime.3.html

 エキスパートCプログラミングを読んでおられるようですが、この本のp.27〜のソースは、「time_tがいつオーバーフローするか」を検証するためのものです。time()関数は1970年1月1日からの経過秒数を返すのですが、この戻り値がtime_t型です。
 time_tがオーバーフローすると、2000年問題と同じような現象が起きるわけですが、それがいつかを判定するために、time_t型の変数に0xffffffffを設定し、ctime()とかで日付に変換しているわけです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


438 Re: Not Found コメント数:  1件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/22 (水) 02:08
 http://member.nifty.ne.jp/maebashi/
> リニューアルと称したコンテンツ削除は耳が痛いです。
> 私の場合は新しいレイアウトで書き直すつもりで削除するのですが、
> やっぱり凝ったレイアウトにしようとすると億劫になります。

 古いページはそのままで、新たに書くページだけ新レイアウトにするというのは、美意識が許しませんか? (^^;
 いや、実際、そういうのがわからなくもないんですが。

> 相互リンク張りまくったはいいけど管理しきれなくなって
> 404が出まくってるページも悲しいものがありますね。

 私は「相互リンク」というものはその精神が理解できないのですが、相互リンクでなくても、リンク集はいつか切れる可能性がありますよね。
 移転した場合は新しいURLに直せばいいとして、ページがなくなっちゃった場合、リンク集からリンクを削除するよりは、そのままにした方が http://archive.org で探せる可能性があるからずっとマシでしょうか。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


437 time関数で困ってます コメント数:  7件
  linkru 2003/01/21 (火) 23:37
C言語のtime関数群がよくわからないのですが
何かいいホームページはないでしょうか?
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


436 Not Found コメント数:  2件
  れぷ@職場 2003/01/20 (月) 18:06
雑記読ませていただきました。

リニューアルと称したコンテンツ削除は耳が痛いです。
私の場合は新しいレイアウトで書き直すつもりで削除するのですが、
やっぱり凝ったレイアウトにしようとすると億劫になります。
HTMLも「簡潔に作る」って精神の応用が必要だと思ってからは
下手に凝らなくなりましたね。

コンテンツ削除による404も寂しいですが、
相互リンク張りまくったはいいけど管理しきれなくなって
404が出まくってるページも悲しいものがありますね。
# 特にバナーありだと「×」マークが出まくって虫食いですし。

あ、かなり取り留めなくなってしまいました。
それでは。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


435 Re^6: 構造体のサイズ コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/19 (日) 14:29
 http://member.nifty.ne.jp/maebashi/
> charset=ISO-2022-JPとなっていますが、実際はシフトJISになっているようで、
> charsetを解釈するUA(Operaなど)では文字化けします。

ポカが多くてすみません。修正しました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


434 Re^5: 構造体のサイズ コメント数:  1件
  田中 2003/01/19 (日) 12:40
> 遅くなりましたけど、補足ページに追加しました。
charset=ISO-2022-JPとなっていますが、実際はシフトJISになっているようで、
charsetを解釈するUA(Operaなど)では文字化けします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


433 Re^4: 構造体のサイズ コメント数:  2件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/19 (日) 01:44
 http://member.nifty.ne.jp/maebashi/
> …しかし、この辺がわかりにくいということなら、「体当たり学習」は説明不足ということでしょうね。時間ができたら補足ページの方に入れたいと思います。

遅くなりましたけど、補足ページに追加しました。
まだわかりにくいかもしれませんが、こんなもんでどうでしょうか。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


432 Re: 『C言語 ポインタ完全制覇』のサンプルソース コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/18 (土) 15:00
 http://member.nifty.ne.jp/maebashi/
> 『C言語 ポインタ完全制覇』のサンプルソースのWindows向けのもの
> (src_dos.LZH)にsrc_unix.tarなる(壊れた?)ファイルが紛れ込んでいるようです。

いろいろぬかってましてすみません。
これはUNIX用のソースのアーカイブファイルですね。
抜いたものに交換しました。ご指摘ありがとうございました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


431 『C言語 ポインタ完全制覇』のサンプルソース コメント数:  1件
  田中 2003/01/16 (木) 23:59
『C言語 ポインタ完全制覇』のサンプルソースのWindows向けのもの
(src_dos.LZH)にsrc_unix.tarなる(壊れた?)ファイルが紛れ込んでいるようです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


430 久しぶりの投稿です コメント数:  0件
  linkru 2003/01/16 (木) 22:59
お久しぶりです。皆さんから薦めていただいた
エキスパートCプログラミングという本を色々調べた上で
面白そうなので買ってみました。
でもやっぱり難しくtime関数やらなにやらと
わからないものが出てきてますが。少しずつでも着々と
読み進めて生きたいと思います。
皆さん今年もよろしくお願いします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


429 Re: なんだか コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/07 (火) 22:57
 http://member.nifty.ne.jp/maebashi/
> 正誤表の量がすごいことになってますが
> こんな程度の精度で本って出せるんですなぁ

 また2chにスレが立ったんですね。

 正誤表が増殖していることに関しては、確かに言い訳できません。
 チェック不足でした。申し訳ありません。
 今から私にできることとして、発覚したミスは、できるだけ速やかにWebで公開していくつもりです。

 その他、2chのスレッドではいろいろ言われていますが、本にしろWebページにしろ、公開してしまった以上は批判は読み手の自由です。もちろん私にとっては、批判されるのは残念ではありますが、仕方のないことです。
 特に文体に関しては、こちらはそれなりの効果を狙って書いたわけですが、好みが分かれると思います。

 「おーい、前橋さーん、次で返事してください」とも言われていますが、今のところ私は2chの該当スレに書きこむつもりはありません(もちろん今までも書いてませんよ。このスレには)。技術的な面で反論したいことが出てきたら、過去にもそうしたように、うちのWebページに書こうと思っています。

今気付いたのですが、プログラマ板の方にも立ってたんですね。
http://pc.2ch.net/test/read.cgi/prog/1041929582/l50
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


428 Re^4: 構造体のサイズ コメント数:  0件
  ミニえもん 2003/01/07 (火) 22:41
> 文章では説明しづらいので、図を書きました。

わざわざありがとうございます。

> …しかし、この辺がわかりにくいということなら、「体当たり学習」は説明不足ということでしょうね。時間ができたら補足ページの方に入れたいと思います。

あー、ただ私がかん違いしてただけなんで、別に説明不足と
いうことはないと思います。ホント時間ができたらで
けっこうなんですみません。どうもありがとうございました。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


427 なんだか コメント数:  1件
  デフォルトの名無しさん 2003/01/07 (火) 17:47
 http://pc3.2ch.net/test/read.cgi/tech/1041927668/l50
正誤表の量がすごいことになってますが
こんな程度の精度で本って出せるんですなぁ
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


426 Re^3: 構造体のサイズ コメント数:  4件
  (ぱ)   | PXU00211@nifty.ne.jp 2003/01/07 (火) 07:55
 http://member.nifty.ne.jp/maebashi/
> 私は「book_kanri プログラムで、書名などの長さに応じて
> メモリの使用量を節約するのであれば、構造体も、収める
> べき要素群の全体のサイズに応じて、サイズを確保するはずだ。

この認識が間違っているようです。
書名や著者名は、構造体に収められてはいないからです。構造体に入っているのは、あくまで書名や著者名へのポインタだけです。

文章では説明しづらいので、図を書きました。

http://member.nifty.ne.jp/maebashi/struct.png

この図で、書名や著者名の長さが変動したとして、構造体BookDataのサイズは変化しますか?

> 構造体とは要素群の型、またはポインタ型を格納するもの
> であり

構造体に格納されるのは構造体のメンバです。
BookDataでは、構造体のメンバとしてポインタ型を宣言している、というだけのことです。

…しかし、この辺がわかりにくいということなら、「体当たり学習」は説明不足ということでしょうね。時間ができたら補足ページの方に入れたいと思います。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


425 Re^2: 構造体のサイズ コメント数:  5件
  ミニえもん 2003/01/06 (月) 23:24
せっかく答えていただいたのに、返事が遅れてすみません。

私は「book_kanri プログラムで、書名などの長さに応じて
メモリの使用量を節約するのであれば、構造体も、収める
べき要素群の全体のサイズに応じて、サイズを確保するはずだ。
でも、データの登録のときに、ソースの始めのほうで宣言した
BookData 型を毎回見ているようだ。これじゃあ本ごとの
malloc() の意味がないじゃないか。そもそも構造体のサイズ
って何なのだろう。」

という感じで sizeof(BookData) とかしてみたのですが、

> sizeof(BookData)は構造体のサイズを求めていますが、
> sizeof(data_p)はsizeof(BookData*)と同値であり、
> 構造体を指すポインタのサイズを求めています。

構造体とは要素群の型、またはポインタ型を格納するもの
であり(付加情報もあるのかもしれませんが)、中の
要素にサイズの可変するものがあっても構造体自体には
特に関係ない、という認識でよろしいのでしょうか?

よくわからないことを下手な文章で書いているので、
何を言っているかわかりにくいかもしれませんが、私の
勘違い、認識不足をご指摘お願いします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


424 Re^3: エスケープシーケンスについて コメント数:  0件
  Qo-ge 2003/01/06 (月) 01:27
返答ありがとうございます。

> Linuxでも、どの様な端末を利用しているのかによって違うと思いますが、
> VT100端末のエスケープシーケンスは、kterm, xtermなど
> 多くの端末で使えそうですから、以下のPageが参考になるかもしれません。
> http://hp.vector.co.jp/authors/VA016670/escape_code.html

実は、このページで参考文献に挙げている本を、読んでいる途中で湧いた
疑問だったんです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


423 Re^2: エスケープシーケンスについて コメント数:  1件
  本多   | manybook@msc.biglobe.ne.jp 2003/01/03 (金) 12:47
> > エスケープシーケンス
> '\n'とか'\r'などならC言語の拡張表記になりますね。
ANSIで定義されているものは以下の表記くらいかな?
\a,\b,\f,\n,\r,\t,\v,\\,\?,\',\",\0
それ以外は処理系定義でしょう。
全く許さない処理系もあるだろうし、複雑なものを許すものもあるでしょう。

> >自分はLinuxを使っているのですが、
> でももし"\x1B[xx"みたいなものを指しているなら、
> 処理系定義かと思います。

Linuxでも、どの様な端末を利用しているのかによって違うと思いますが、
VT100端末のエスケープシーケンスは、kterm, xtermなど
多くの端末で使えそうですから、以下のPageが参考になるかもしれません。
http://hp.vector.co.jp/authors/VA016670/escape_code.html
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


422 Re: エスケープシーケンスについて コメント数:  2件
  レプラコーン 2003/01/02 (木) 16:53
明けましておめでとうございます。

> エスケープシーケンス
'\n'とか'\r'などならC言語の拡張表記になりますね。

でももし"\x1B[xx"みたいなものを指しているなら、
処理系定義かと思います。
大抵は同じ表記で画面クリアしたりできますが、
色の指定はマシンとかターミナルで変化しますし。
詳しい方、フォローお願いします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


421 エスケープシーケンスについて コメント数:  3件
  Qo-ge 2003/01/02 (木) 00:52
あけましておめでとうございます。
新年早々質問なのですが、printf関数などで使用する
エスケープシーケンスとはC言語の機能なのでしょうか?
それとも、OSの機能なのでしょうか?
自分はLinuxを使っているのですが、エスケープシーケンスについて
詳しく書いてある、サイト等ありましたら教えて頂けると嬉しいです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


420 OTD版掲示板 コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2002/12/31 (火) 16:35
 http://member.nifty.ne.jp/maebashi/
 文字数制限で困ったので思い出しました。
 少し前の雑記帳に書きましたが、OTDの方に掲示板を作成してあります。

http://bbs9.otd.co.jp/maebashi/bbs_plain

 ただこの掲示板、クリッカブルURLの機能がないとか、結局<PRE>にできないとか、この辺はJavaScriptでがんばれば何とかなりそうですが他にもパスワードは数字しか許さないとか、で、英字のパスワードを入れて怒られて戻ると入力したメッセージがきれいさっぱり消えているとか、いろいろあって、現時点では移行は考えていません。
 まだHTMLのチューニングもしてないのでNetscapeだと崩れたりもしますが、覗いてみようと思う方はどうぞ。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


419 Re: 構造体のサイズ コメント数:  6件
  (ぱ)   | PXU00211@nifty.ne.jp 2002/12/31 (火) 16:25
 http://member.nifty.ne.jp/maebashi/
> 自分で show_data() あたりに sizeof(data_p) とか書き加えてみても
> 常に 4 が帰ってきます。sizeof(BookData) は 28 のようです。

 sizeof(BookData)は構造体のサイズを求めていますが、sizeof(data_p)はsizeof(BookData*)と同値であり、構造体を指すポインタのサイズを求めています。
 ものすごく乱暴なことを言ってしまうと、ポインタ型は「アドレス」を表現する型ですから、まあintと似たようなもので、今のたいていの環境では4バイトであることが多いようです。

>'行き当り' と書いてあります。本の題名や他の部分でも
>'行き当たり' とあるので、ここは少し統一感がないのではないかと

うっ (^^;
正誤表に入れておきます。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


418 Re: 構造体のサイズ コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2002/12/31 (火) 16:24
 http://member.nifty.ne.jp/maebashi/
> List 5-18 の 316 行目の sizeof(BookData) で構造体のサイズを
> 求めていると思うのですが、これは常に同じ値なのでしょうか?
> それとも、その前に BookData tmp に格納した要素群のサイズに応じて、
> 違うサイズをもつのでしょうか?

 コンパイラやマシンやコンパイルオプションが変われば差が出ることがありますが、実行時に、「tmp に格納した要素群のサイズに応じて」違うサイズになるようなことはありません。
 List5-18 9行目からの宣言を見ると、BookDataのメンバは、intがひとつとポインタが6つです。おそらくミニえもんさんの環境では、intもポインタも4バイトなのでしょうから、7×4で28バイトです。計算が合いますね。
※これは、パディングを無視した乱暴な計算です。実際には、構造体のサイズは、メンバのサイズの和よりちょっと大きくなることがよくあります。

文字数制限がきついので続きは別便で。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


417 構造体のサイズ コメント数:  8件
  ミニえもん 2002/12/31 (火) 08:11
ちょくちょく「C 言語 体当たり学習 徹底入門」を読ませてもらって
います。
この本の book_kanri.c 動的メモリ確保版について質問があります。

List 5-18 の 316 行目の sizeof(BookData) で構造体のサイズを
求めていると思うのですが、これは常に同じ値なのでしょうか?
それとも、その前に BookData tmp に格納した要素群のサイズに応じて、
違うサイズをもつのでしょうか?

自分で show_data() あたりに sizeof(data_p) とか書き加えてみても
常に 4 が帰ってきます。sizeof(BookData) は 28 のようです。自分の
サイズの求め方が悪いのかもしれませんが、このへんの仕組み、または
正しいサイズの求め方を教えていただけないでしょうか?
なにぶん自分の勉強不足や、勘違いがあると思いますがお願いします。



それと、質問ではないのですがこの本の表紙と、一番初めのほうの
表紙を模したページの左側の説明文なのですが、上から 8 番目に
'行き当り' と書いてあります。本の題名や他の部分でも
'行き当たり' とあるので、ここは少し統一感がないのではないかと
思ったり字としては間違いじゃないしどうでもいいことだと
思ったりでまず一応お伝えしておきます。

【新規投稿】 【この投稿にリプライ】 【投稿者削除】


416 Re^2: printf変換 コメント数:  0件
  xiu 2002/12/19 (木) 15:25
> あります。プロトタイプ宣言がなかったり、可変長引数の可変部では、
> floatはdoubleに拡張されます。
>
> そうじゃないと、ANSI-C以前のCでは、sin()にfloatが渡せなかったりして
> 悲惨なことに。
>
> K&R第2版なら、p.247〜p.248あたりに書いてあるようです。

なるほど、引数の格上げというのがありましたか。
これですっきりしました。ありがとうございます。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


415 Re: (未承認)お母様と妹さんをお捜しです。一度ご覧下さい コメント数:  0件
  (ぱ)   | PXU00211@nifty.ne.jp 2002/12/18 (水) 22:22
 http://member.nifty.ne.jp/maebashi/
さて、よく見かける書き込みですが... どうしたものでしょうか。

 大元の依頼者の人は本当に心配しておられるのでしょうし、リンク先のページの管理者の方も、おそらくは善意でやっておられるのだと思います。
 しかし、結局のところこちらからは相手の素性がわからないわけで、もしかすると違法な借金の取り立てだったり、ストーカーさんだったりする可能性もあります。リンク先のページの末尾についてるバナーは広告? だとすると、無料ホームページでもないようだし、単なる広告収入Get狙いと思われてもしょうがないでしょうし。

 あとまあ、手段として、掲示板への無差別爆撃という方法を取るのはいかがなものかと。かつてあったようなチェーンメールと違って、「同じ内容を他の掲示板にも書きこんであげてください!」と書いてないだけマシかもしれませんが。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


414 Re: printf変換 コメント数:  1件
  (ぱ)   | PXU00211@nifty.ne.jp 2002/12/18 (水) 22:10
 http://member.nifty.ne.jp/maebashi/
> char, short, intを%dで表示する場合には、整数の格上げが
>あるために正しく表示される、というのは分かるんですけど、
>浮動小数ではそのような変換ってありませんよね?

あります。プロトタイプ宣言がなかったり、可変長引数の可変部では、
floatはdoubleに拡張されます。

そうじゃないと、ANSI-C以前のCでは、sin()にfloatが渡せなかったりして
悲惨なことに。

K&R第2版なら、p.247〜p.248あたりに書いてあるようです。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


413 (未承認)お母様と妹さんをお捜しです。一度ご覧下さい コメント数:  1件
  聡子さんの協力者   | atp-therapy@dk.pdx.ne.jp 2002/12/18 (水) 18:10
 http://www3.ocn.ne.jp/~tobiinu/info4.html
誠に申し訳ありません。
恐れ入りますが迷惑と思われる方削除して下さい。どうかご協力お願い致します。

探し主の聡子さん(17歳)は、母親の都合で千葉県の高校を中退し、現在は兵庫県淡路の病院で
看護助手をされておられます。

◎お母様上月恵子さん(旧姓石川恵子)元ケアーハウス若松で介護職と妹上月礼子さんをお捜しです◎

2002年9月18日(水)に兵庫県から行方が分からなくなった母:上月恵子)(40歳)妹:上月礼子(10歳)小学4年生を捜しておられます。

お母様は普段から精神内科にかかっておられ心配されています。もしお近くで見かけ
られた方、同級生で知っておられる方がおられましたら協力してあげてください。

詳しい内容や写真は、HPに掲載されています。
一度ご覧になり、協力してあげてください。
HPお持ちの方リンクお願いいたします。
***************************************
尋ね人のホームページ



【新規投稿】 【この投稿にリプライ】 【投稿者削除】


412 printf変換 コメント数:  2件
  xiu 2002/12/18 (水) 16:17
以前から不思議に思っていたのですが、printfで浮動小数の値を表示するときに、
float a = 1;
double b = 2;
printf("%f, %f\n", a, b);
とすると、どちらの値も正しく表示されるのですが、floatとdoubleのサイズが異なる場合この区別はどうやってなされているのでしょうか?
char, short, intを%dで表示する場合には、整数の格上げがあるために正しく表示される、というのは分かるんですけど、浮動小数ではそのような変換ってありませんよね?

それとも、このコードは正しくないのでしょうか・・・・ちょっと気になるので、どなたか教えてくださいませ。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


411 Re^3: PointerのPointer コメント数:  0件
  Taka 2002/12/17 (火) 13:25
> だから、例えば、Hoge1( int (*hoge)[11]);なんて、宣言したら、
> Hoge1(&hoge1);も型が違うというERRORになるでしょう。
gcc-3.2.1 で実験したら、警告になりました。

> ところで、Hoge1( int (*hoge)[])で関数を定義したとき、
> 配列の大きさを記述しない、このPointerは文法的には、どうなっちゃうの?
大きさの不明な配列型は「定義が不完全な型」です。「定義が不完全な型」と void 型をあわせたものを「不完全型」といいます。よってこの仮引数は「不完全型へのポインタ」ということになります。
不完全型の lvalue を定義するとエラーになります。
extern int array[]; は大きさが不明な配列であり、よって「配列 array 」は不完全型です。ですが array[1]=0; はエラーになりません。
この根拠は、式 array[1]=0 中の array はもはや配列ではなくポインタであり、このポインタは int* であるため不完全型ではないからです。

gcc は「不完全型へのポインタ」への代入を警告にしないようですね。
まあもっとも void* への代入を警告されると困っちゃいますが。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


410 Re^3: 何を作るか コメント数:  0件
  レプラコーン 2002/12/17 (火) 12:58
> C++を極めるのはキビしいですが、全ての機能を使わなければならないわけではないですよね。
> ある程度割り切らないとやってられないと思います。
さすがに全部を憶えるには相当年季が必要な気がします。
5年くらい前にちょっと勉強したときに比べると、
標準仕様がかなり爆発していてビックリしています。
とりあえずはクラスとコレクションを組み合わせて
遊んでみるのが良いかなとか思っています。


> 一部はCよりも便利だなって思えるところもある
そうですね。
クラスをちょこちょこ作るくらいだとかなり楽ですね。
あとはテンプレートとか。
演算子オーバーロードは当面、new/deleteくらいしか
使わないような気がしますね。


ところで、C++の標準ライブラリってC++stdと書かれますけど、
この式ってコンパイル通りませんよね。

#include <stdio.h>

int main(void) {
int C = 1;
int std = 2;

printf("%d\n", C++std);
return 0;
}

見事に構文エラーがでました。:-)
# C++::stdではポインタがあさっての方向に行きそうですし。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


409 Re^3: PointerのPointer コメント数:  0件
  本多   | manybook@msc.biglobe.ne.jp 2002/12/17 (火) 10:31
> Hoge3( int **hoge)に対して int hoge[10];の先頭Pointerを
> 渡すうまい方法はあるのかなって言うのが疑問です。
夜更かしした次の日なもので、すっかり寝ぼけていたようです。
そんなもの渡しちゃいけないですね。目が覚めました(^^;)

PointerのPointerを受け取る関数に配列の先頭Pointerを直に渡して
うまくいくわけない。当たり前のことに気づくのに
時間がかかってしまいました。無知をさらしてしまいました。
あぁ、恥ずかしい (*-.-*)
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


408 Re^2: PointerのPointer コメント数:  2件
  本多   | manybook@msc.biglobe.ne.jp 2002/12/17 (火) 10:17
> まず Hoge2 と Hoge3 と Hoge4 は同一型であることは大丈夫でしょうか?
> こいつらはすべて Hoge3(int **hoge) となります。
> つまり、この(仮)引数は「(int へのポインタ)へのポインタ」型と
> なります。したがって Hoge3(&hoge2) が文法的に正しいことになります。

これは、了解です。
Hoge2〜4はPointerのPointer、Hoge1は配列のPointerになるところまでは。

だから、例えば、Hoge1( int (*hoge)[11]);なんて、宣言したら、
Hoge1(&hoge1);も型が違うというERRORになるでしょう。

ところで、Hoge1( int (*hoge)[])で関数を定義したとき、
配列の大きさを記述しない、このPointerは文法的には、どうなっちゃうの?
っていうのと,

Hoge3( int **hoge)に対して int hoge[10];の先頭Pointerを
渡すうまい方法はあるのかなって言うのが疑問です。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


407 Re: PointerのPointer コメント数:  3件
  Taka 2002/12/17 (火) 10:07
まず Hoge2 と Hoge3 と Hoge4 は同一型であることは大丈夫でしょうか?こいつらはすべて Hoge3(int **hoge) となります。つまり、この(仮)引数は「(int へのポインタ)へのポインタ」型となります。したがって Hoge3(&hoge2) が文法的に正しいことになります。
次に Hoge1 の(仮)引数は「(int の配列[要素数不明])へのポインタ」です。なのでこいつらに &hoge2 を渡しては非互換です。仮に Hoge1() の中で仮引数 hoge を hoge[1][2] のように使おうとすると、要素数不明な配列は使えない、というエラーになります。

「関数の仮引数において、配列名は自動的にポインタに変換される」のは確かにそうなのですが、これは再帰的に適用されません。この法則が適用されるのは1段階のみです。よって仮引数に「ポインタの配列」と「配列の配列」を書くと、別物です。ご指摘のとおり、「ポインタのポインタ」と「ポインタの配列」は同一視されますが…
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


406 PointerのPointer コメント数:  4件
  本多   | manybook@msc.biglobe.ne.jp 2002/12/17 (火) 09:46
以下のcodeを見てください。
----
int Hoge1( int (*hoge)[]);
int Hoge2( int *hoge[]);
int Hoge3( int **hoge);
int Hoge4( int *(*hoge));
int main(void)
{
int hoge1[10];
int *hoge2;

Hoge1( &hoge1);
Hoge2( &hoge1);/* Warning */
Hoge3( &hoge1);/* Warning */
Hoge4( &hoge1);/* Warning */
Hoge1( &hoge2);/* Warning */
Hoge2( &hoge2);
Hoge3( &hoge2);
Hoge4( &hoge2);
return 0;
}
----
ここで、/* Warning */とcommentしている行にgccが、
hoge.c:11: warning: passing arg 1 of `Hoge2' from incompatible pointer type
という警告をしてきます。

私は「関数の引数においては配列とPointerは同列に扱われる」と
認識していたのですが、どうも配列とPointerを区別しているようなのですが、
関数の引数で、PointerのPointerはPointerの配列と
扱いが異なるんでしたっけ?
どなたか、この警告を解説していただけないでしょうか?
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


405 Re^3: fgets関数とストリーム コメント数:  0件
  Taka 2002/12/16 (月) 08:30
> while (fgetc(stdin) != EOF);
は、まずいでしょう。もう二度と stdin からデータを読み取ることができなくなってしまいます。「クリア」が何のことかかかれていませんが、改行文字までを除去することの意味であるなら、
scanf("%*[^\n]%*c"); とか。
これがどのような動作を意味しているのか、調べてみるとよいと思います。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


404 Re^2: fgets関数とストリーム コメント数:  1件
  健太 2002/12/15 (日) 18:32
> そうです。

そうですか・・・では,入力ストリームのクリアを考慮するとこんな風にするしかないですかね(fflushは使えないようですし・・・)

char buff[5];
fgets(buff,5,stdin);
while (fgetc(stdin) != EOF);
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


403 Re: fgets関数とストリーム コメント数:  2件
  (ぱ)   | PXU00211@nifty.ne.jp 2002/12/15 (日) 16:40
 http://member.nifty.ne.jp/maebashi/
> 残りの
> 5678[リターン]
> の入力は入力ストリームに残って次回にの入力にまわされるのでしょうか?

そうです。

って、これだけではあんまりなので、参考URLを。

http://www.soi.wide.ad.jp/iw99/iw99_tut/slides/26/index_31.html

ここ、他にも重要なことがいろいろ書いてありますね。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


402 fgets関数とストリーム コメント数:  3件
  健太 2002/12/15 (日) 13:37
fgets関数において格納文字数を超えた入力についてはどういう扱いになるのでしょうか?

たとえば入力が(標準入力であるとして),
123456[リターン]
で,
char buff[5]
fgets(buff,5,stdin);
ならば,
buff[0]='1'
buff[1]='2'
buff[2]='3'
buff[3]='4'
buff[4]='\0'
になるわけですが,
残りの
5678[リターン]
の入力は入力ストリームに残って次回にの入力にまわされるのでしょうか?
すいませんがよろしくお願いいたします。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


401 Re: どうもありがとうございました コメント数:  0件
  xiu 2002/12/15 (日) 09:07
とりあえず、Cの文法はシンプルですから、プログラミングの勉強には向いているのではないかと思います。Cで思い通りのプログラムが組めるレベルがあれば、他の言語を使うことになっても割と楽ですし。
C++についても、ほとんどのC++の本はCを学び終わっていることを前提としている本がほとんどでしょうしね。とりあえずC、その後に適当なオブジェクト指向言語、というのがいいのではないでしょうか。

# 私の場合、実際に何の言語を使うかはライブラリ環境で決めています(今はBorland C++ Builderが中心)。
【新規投稿】 【この投稿にリプライ】 【投稿者削除】


より新しい記事へ ← 500 件の投稿中 450件目〜401件目を表示 → より前の記事へ
表示件数: 件/頁 
パスワード:

Copyright(C) 1999 NIFTY Corporation
All Rights Reserved.