
No.1ベストアンサー
- 回答日時:
仕組み、指定した文字数分もしくは、1行の文字列の読み込み。
読み込み文字数を超える文字列を読み込ませても、引数で指定した文字数しか読み込みません。当然文字列にはNULLが入りませんので、NULL終わりの文字列として扱うと、最悪はコアダンプ(異常終了)します。
例)
a.txtに
abcdefg[改行]
[EOF]
と有った場合、
FILE *fp;
char buf[11];
fp=fopen("a.txt", "r");
fgets(buf, 10, fp);
この場合bufの中身は"abcdefg[NULL]"([NULL]はNULL文字)となります。
しかしa.txtの中身が
abcdefghijklmn[改行]
[EOF]
となっていた場合は
bufの中身は"abcdefghij"となります。
文字列の最後にはNULLもじは自動的に付加されませんので、制限を越える文字列を読み込みことが想定されている場合は、
buf[10]='0x00'でNULL文字を付加しましょう。
続きの文字列を読み出した場合、bufの中身は"klmn[NULL]"となります。
No.3
- 回答日時:
fgets()は「指定した文字数より1文字少ない文字数」または「1行分」を読み込み「最後に'\0'を付加して」バッファに設定します。
char str[10] ;
fgets(str, 10, stdin) ; // 1234567890改行 と入力
この場合、strは
'1','2','3','4','5','6','7','8','9','\0'
と設定されます。
残りの入力である'0','\n'は次のfgets()呼び出し時に
'0','\n','\0'
として取得されます。
fgets()の入力結果に'\0'が自動的に付加されるのはANSI-Cの仕様です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
エクセルで文字列をtxtファイル...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
LEFT関数で文字数を指定しない...
-
VBAを使って選択した範囲の数字...
-
(エクセル)複数のセルの数値...
-
VBの「As String * 128」とは?
-
VBAで改行コードを判定したい
-
文字列の最後の文字を置き換え...
-
VBA2005 16進を2桁で表示したい。
-
delphiにて 文字列の最後の改...
-
A B C D E の五文字のすべてを...
-
漢数字に変換するプログラム
-
Left関数とRight関数を合わせた...
-
エクセル 数値データを桁をそ...
-
SQL の Update文(?) と ...
-
MS SQLServer のSQLで文字列の...
-
ACCESSのSQLでのカンマ’認識に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
VBの「As String * 128」とは?
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
エクセル 数値データを桁をそ...
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
OnTime 使用時のプロシージャへ...
-
LEFT関数で文字数を指定しない...
-
VBAを使って選択した範囲の数字...
-
Msgboxの×が押されたとき
おすすめ情報