質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

171閲覧

ストリームに書き出されるバイト数

lawson.aic

総合スコア18

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

2クリップ

投稿2017/10/18 00:24

ストリームfpに書き出されるバイト数がなぜ3になるのかが分かりません。

以下内容です。

int x = 1357
sizeof(int)が2である時、
fprintf(fp, "%d", x)によってストリームfpに書き出されるのは「3バイト」
一方、fwrite(x, sizeof(int), 1, fp)によって書き出されるのは「2バイト」。

1,3,5,7の4文字で4バイトなのでは?と考えています。
ご教授よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

1,3,5,7の4文字で4バイトなのでは?と考えています。

その通り。
実際にやったら3バイトになったのですか?
何かに書いてあったのですか?
前者ならそのコードを提示、後者であれば文献なりなんなりへのリンクがあると良いですね。

投稿2017/10/18 01:00

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lawson.aic

2017/10/19 00:07

返信有難うございます。 参考書の文章題のため、ソースは記載されていません。 わりと有名な方が著者なので、自分の理解できていない何かがあるのかも?と思い質問しました。 著作物の中身や、タイトルを出して良いか、判断できなかったので内容をカットして掲載しました。
ttyp03

2017/10/19 00:25

間違いは出版社のサイトで訂正情報があったりしますので、見てみると良いかと思います。 例えばSBクリエイティブならここ。 http://www.sbcr.jp/support/errata.html
lawson.aic

2017/10/19 05:18

返信有難うございます。 正誤表にも該当するものとしては記載がありませんでした。
ttyp03

2017/10/19 05:23

著者によっては自身のブログ等でも正誤情報を公開している方もいるので、探してみるといいかもしれません。 いずれにしても3バイトはおかしいので自信を持ってください。 「なぜ3バイトになるのか?」と考えるのではなく「この3バイトは間違いだ」と言い切れるようになれるといいですね。
guest

0

ベストアンサー

fprintf(fp, "%d", x)によってストリームfpに書き出されるのは「4バイト」です。

sizeof(int)が2である時は、fwrite(&x, sizeof(int), 1, fp)によって書き出されるのは「2バイト」であっております。

投稿2017/10/18 00:47

編集2017/10/18 00:53
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lawson.aic

2017/10/19 00:01

返信有難うございます。 ですよね… 参考書の文章題なので、編集社に問い合わせています。
A.Ichi

2017/10/19 00:12

fprintf(fp, "%x", x)とすればHEXで3バイトになるんですがね。
lawson.aic

2017/10/19 05:21

返信有難うございます。 出版社から返事がきました。 どうやら回答が間違っていたようです。 別の視点でのアドバイスをいただけたので、ベストアンサーとします。
guest

0

fprintf(fp, "%d", x)によってストリームfpに書き出されるのは「3バイト」

「やってみたらこうなった」ですか?
「なんかに書いてあった」ですか?

投稿2017/10/18 00:32

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lawson.aic

2017/10/18 23:59

返信有難うございます。 参考書の問題です。 コードは掲載されておらず、穴埋め問題です。
episteme

2017/10/19 00:02

問題の解答が"3バイト"だったのかしら。 やってみればわかるよ♪
lawson.aic

2017/10/19 05:19

返信有難うございます。 コードを書いて、実行すると4でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問