Unicode で保存したファイルを入力

Unicode のベタで保存したファイルを入力して表示します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. ソースプログラムです。
    ファイル名 説明
    getfile.cpp Unicode 入力
  2. ワイドキャラクタで全角文字(漢字など)を表示するときはロケートを設定します。
    locale.h を取り込んで setlocale() 関数で "japanese" に設定して下さい。
        #include <locale.h>
        setlocale(LC_ALL, "japanese");
        wprintf(wstr);
        
  3. ワイドキャラクタの領域を定義して、ファイルから入力します。
    binary モードで入力するとファイルに記録されている内容がそのまま転送されます。
    通常の Unicode で保存するとファイルの先頭に FFFE が格納されるので Unicode のベタで保存して下さい。
        wchar_t  wstr[10000];
        void  GetText(char *file)
        {   FILE    *FI;            //FILE の定義
            unsigned int  len;
    
            if (fopen_s(&FI,file,"rb")!=0)
            {   printf("INPUT FILE open error[%s]\n",file);
                return;
            }
            len= fread(wstr,1,10000,FI);
            fclose(FI);
            *(wstr+len)= '\0';
            *(wstr+len+1)= '\0';
        }
        
  4. "UniSource.cpp" は Unicodeベタで保存したソースプログラムのファイルです。
        void  main()
        {
            setlocale(LC_ALL, "japanese");
            GetText("UniSource.cpp");
            printf("\nunicode ベタで保存したファイル\n");
            wprintf(wstr);
        }
        

【NOTE】

セキュリティが強化されたワイドキャラクタ用のオープン命令が提供されているようです。
この命令を使えばオープン命令は次のようになります。
今回は binary モードで入力するので基本的な違いはありませんが、text モードを使うと違って来るのでしょうね。 (^_^;)
FILE    *FI;            //FILE の定義
if (_wfopen_s(&FI,L"UniSource.cpp",L"rb")!=0)
{   printf("INPUT FILE open error[%s]\n",file);
    return;
}

超初心者のプログラム入門(C/C++)