ここから本文です

C言語のfgets()関数で、読み込み最大の文字数のところをsizeof()にした場合、読み...

アバター

ID非公開さん

2020/2/1311:34:03

C言語のfgets()関数で、読み込み最大の文字数のところをsizeof()にした場合、読み込み最大文字数はどのくらいですか?

例えば
char buff[20];で、
fgets(buff,sizeof(buff),fpi)にした場合です。

お願いします。

閲覧数:
13
回答数:
3

違反報告

回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

あみやさん

2020/2/1313:25:14

sizeofは、変数のサイズをバイト数で返す演算子です。
charは1バイトですので、char配列はそのまま要素数=バイト数になります。

fgatsは末尾にNULLを付加するため、記録できる文字数は1文字減ります。

ikt********さん

2020/2/1312:13:59

最大文字数は、あなたが指定した20です。
この20には、fgetsが付加する終端文字 '\0' も含まれる。

リファレンス見れば、書いてあります。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/fgetc.3.html

  • ikt********さん

    2020/2/1312:16:57

    一部引用:
    ... 読み込みは EOF または改行文字を読み込んだ後で停止する。

    改行が見つからなければ、19文字まで埋めて、終端 '\0' くっつけて
    return してくるはず。
    この場合、
    ・行の途中 までしか読めなかった
    ってことです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

yay********さん

2020/2/1312:03:37

charは1byte
なんだから
fgets(buff,20,fpi)
ラスト1文字は'\0'だから(1byte文字で)19文字

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる