先頭へ戻る

fgetws | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る

fgetws関数

概要

ファイルからワイド文字列を1行受け取る。

ヘッダ

stdio.hwchar.h

形式

wchar_t* fgetws(wchar_t* s, int n, FILE* stream);

引数

s

入力文字列を受け取る配列を指すポインタ。

n

引数s が指す配列の要素数。

stream

入力ストリーム。

戻り値

成功時は 引数s を返す。読み取りエラーの発生時や、配列に1文字も読み取らなかった場合は、ヌルポインタが返される。

詳細

改行文字を読み取ったとき、あるいは、ファイルの終わりに達したときに読み込みを終える。ただし、引数n

1文字分までしか読み取らない。改行文字を読み取った場合は、それも配列に書き込まれる。いずれにしても、配列に格納された最後の文字の後ろに、ヌル文字(L'\0') が付加される。
引数stream にstdinを指定することで、標準入力から受け取ることも可能である。

注意

読み取りエラーが発生した場合、引数s が指す配列の要素の状態は不定であるから参照してはならない。
また、規格文書の fgetws関数の項目は不明確な点があり、エラー指示子やファイル終了指示子をセットするのかどうかの記述がない(fgetwc関数には記述があるのだが)。とはいえ、それぞれの指示子の意味から察するに、恐らくそれぞれセットされると思われる。

使用例

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>

int main(void)
{
    FILE* fpIn;
    FILE* fpOut;
    wchar_t str[80];

    /* 以下の fopen関数の第2引数は、VisualStudio 2017 の機能を使っている。
       「, ccs=***」のような表記によって、開かれたストリームに入出力するデータを、
       そのエンコーディング形式で変換する。
    */

    fpIn = fopen( "test.txt", "r, ccs=UTF-16LE" );
    if( fpIn == NULL ){
        fputs( "ファイルオープンに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    fpOut = fopen("out.txt", "w, ccs=UTF-16LE");
    if( fpOut == NULL ){
        fputs( "ファイルオープンに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    for( ;; ){
        if( fgetws( str, sizeof(str) / sizeof(str[0]), fpIn ) == NULL ){
            if( feof( fpIn ) ){
                /* ファイルの終わり */
                break;
            }
            else{
                fputs( "エラーが発生しました。\n", stderr );
                exit( EXIT_FAILURE );
            }
        }
        fwprintf( fpOut, L"%ls", str );
    }

    if( fclose( fpOut ) == EOF ){
        fputs( "ファイルクローズに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }
    if( fclose( fpIn ) == EOF ){
        fputs( "ファイルクローズに失敗しました。\n", stderr );
        exit( EXIT_FAILURE );
    }

    return 0;
}

入力ファイル(test.txt)※UTF-16 (LE)

1行目
2行目
3行目

実行結果(out.txt)

1行目
2行目
3行目

関連

この関数は、fgets関数ワイド文字版である。

解説章


参考リンク


------------------------------------------------------------------------

更新履歴

'2019/2/12 VisualStudio 2015 の対応終了。

'2018/4/20 「NULL」という表記を「ヌルポインタ」に修正。

'2018/4/7 「詳細」「注意」「使用例」を大幅に修正。
「使用例」を書き換えた。

'2018/1/22 新規作成。


------------------------------------------------------------------------

標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー