C言語

_wstat

_wstatは、_statのワイド文字版。_stat、_stat32、_stat64、_stati64、_stat32i64、_stat64i32、_wstat、_wstat32、_wstat64、_wstati64、_wstat32i64、_wstat64i32 | Microsoft Learn第1引数がワイド文字列ということ以外は_statと同じ。 _wstat.cppで、と…

_fscanf_l

_fscanf_lは、ロケール指定できるfscanf。fscanf、_fscanf_l、fwscanf、_fwscanf_l | Microsoft Learn_fscanf_l.cで、こう書く。 test2.txtはEUC-JPなのだがtest2.txtはEUC-JPなのだが、文字化けするということは、ロケール指定が影響してない。Sample/c/_fs…

_scanf_l

_scanf_lは、ロケール指定できるscanf。scanf、_scanf_l、wscanf、_wscanf_l | Microsoft Learn_scanf_l.cで、こう書く。 ロケール指定の影響なく、どちらも表示できる。ロケール指定の影響なく、どちらも表示できる。Sample/c/_scanf_l/_scanf_l/src/_scanf…

_printf_l

_fprintf_lを先にやってしまって、順番が逆になってしまったが、_printf_lでの標準出力がどうなるか。printf、_printf_l、wprintf、_wprintf_l | Microsoft Learn_printf_l.cで、こう書く。 ロケール指定の影響はなさそう・・・。ロケール指定の影響はなさそ…

_fprintf_l

_fprintf_lは、fprintfのロケール指定バージョン。fprintf、_fprintf_l、fwprintf、_fwprintf_l | Microsoft Learn_fprintf_l.cで、"Japanese_Japan.932"(Shift_JIS)ロケールと、"Japanese_Japan.20932"(EUC-JP)ロケールで試した。 こうなる。こうなる。 tes…

_wfopen

_wfopenは、引数がワイド文字列というだけで、それ以外はfopenと同じらしい。fopen、_wfopen | Microsoft Learn_wfopen.cで、とすると、 こうなる。こうなる。Sample/c/_wfopen/_wfopen/src/_wfopen at master · bg1bgst333/Sample · GitHub

_stat構造体

_stat構造体は、stat構造体のWindows版。_stat、_stat32、_stat64、_stati64、_stat32i64、_stat64i32、_wstat、_wstat32、_wstat64、_wstati64、_wstat32i64、_wstat64i32 | Microsoft Learnst_devに文字'A'を足すと、そのファイルがあるドライブのドライブ…

_stat

_statは、ファイル情報を取得するstat関数のWindows版。_stat、_stat32、_stat64、_stati64、_stat32i64、_stat64i32、_wstat、_wstat32、_wstat64、_wstati64、_wstat32i64、_wstat64i32 | Microsoft Learn引数には、ファイル名と_stat構造体のアドレスを渡…

_mbstowcs_l

_mbstowcs_lで、指定ロケールのマルチバイト文字列からワイド文字列へ変換できる。mbstowcs、_mbstowcs_l | Microsoft Learn_mbstowcs_l.cで、とすると、 EUCからワイド文字にEUCからワイド文字に。Sample/c/_mbstowcs_l/_mbstowcs_l/src/_mbstowcs_l at mas…

_wcstombs_l

_wcstombs_lで、ロケールを指定してワイド文字列からマルチバイト文字列へ変換できる。wcstombs、_wcstombs_l | Microsoft Learn_wcstombs_l.cで、"Japanese_Japan.932"のロケールセットはなくてもいけるみたい。 こうなってこうなって、 EUCになってる。EUC…

_mbtowc_l

_mbtowc_lで、指定ロケールのマルチバイト文字からワイド文字へ変換できる。mbtowc、_mbtowc_l | Microsoft Learn_mbtowc_l.cで、"Japanese_Japan.20932"のloc1とは別に、"Japanese_Japan.932"のロケールセットは必要。 EUCをワイド文字に出来たEUCをワイド…

_wctomb_l

_wctomb_lで、ロケールを指定してワイド文字からマルチバイト文字へ変換できる。wctomb、_wctomb_l | Microsoft Learn基本"Shift_JIS"とか言ってたけど、"Japanese_Japan.20932"というロケールを見つけた。 これは"EUC-JP"である。 _wctomb_l.cで、こう書く…

_create_locale

_create_localeは、ロケールオブジェクトを作成するWindows(MSVCRT)専用関数。_create_locale、_wcreate_locale | Microsoft Learn解放されるまで一時的に指定ロケールを使いたい場合に用いる。 保存されないので、現在のロケールに影響はない。 _create_loc…

mbstowcs(Windows)

Windowsでmbstowcsを使う。mbstowcs、_mbstowcs_l | Microsoft Learnmbstowcs.cで、ロケールセットなくても成功したな。 ただ第3引数はNULL文字分も含んだものにしないとNULL終端しない。 こうなるこうなる。Sample/c/mbstowcs/mbstowcs_Windows/src/mbstowc…

wcstombs(Windows)

次は、Windowsでwcstombsを使う。wcstombs、_wcstombs_l | Microsoft Learnwcstombs.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ #include <stdlib.h> /* 標準ユーティリティ */ #include <locale.h> /* ロケール */ /* main関数の定義 */ int main(vo</locale.h></stdlib.h></stdio.h>…

mbtowc(Windows)

Windowsでmbtowcで変換する。mbtowc、_mbtowc_l | Microsoft Learnmbtowc.cで、と書く。 こうなる。こうなる。Sample/c/mbtowc/mbtowc_Windows/src/mbtowc at master · bg1bgst333/Sample · GitHub

wctomb(Windows)

Windowsでwctombを使う場合、基本的にShift_JISへの変換ってことになる。wctomb、_wctomb_l | Microsoft Learnwctomb.cで、と書く。 Windowsのワイド文字はUTF-16LEなので2バイト。Windowsのワイド文字はUTF-16LEなので2バイト。 "Japanese_Japan.932"ロケー…

ccs=UNICODE(Windows)

cssにはUNICODEも指定できる。fopen、_wfopen | Microsoft Learn C言語のワイド文字入出力 — MSVCRTの場合 | 雑記帳fopen.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ #include <locale.h> /* ロケール */ /* main関数の定義 */ int main(vo</locale.h></stdio.h>…

ccs=UTF-8(Windows)

WindowsのcssはUTF-8に対応している。fopen、_wfopen | Microsoft Learn C言語のワイド文字入出力 — MSVCRTの場合 | 雑記帳fopen.cで、と書く。 こうなり、こうなり、 UTF-8出力できた。UTF-8出力できた。 (UTF-8でもfprintfだとassert出たので、fwprintfに…

ccs(Windows)

Windowsのfopenにもccsがあるが、類似機能であり、内容は結構違う。fopen、_wfopen | Microsoft Learn C言語のワイド文字入出力 — MSVCRTの場合 | 雑記帳fopen.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ #include <locale.h> /* ロケール </locale.h></stdio.h>…

"Japanese_Japan.932"ロケール(Windows)

"Japanese_Japan.932"ロケールをセットしてみる。setlocale, _wsetlocale | Microsoft Learnsetlocale.cで、こうすると、 こうなり、こうなり、 test1.txtはShift_JISで文字化けしないし、test1.txtはShift_JISで文字化けしないし、 test2.txtもShift_JISで…

"C"ロケール(Windows)

setlocaleがファイル入出力に及ぼす影響について試す。setlocale, _wsetlocale | Microsoft Learnまずは、"C"ロケールでファイル出力してみる。fprintfとfwprintfでファイル出力。 fprintfはShift_JIS出力。fprintfはShift_JIS出力。 fwprintfでは文字化けし…

setlocale(Windows)

setlocaleも、LinuxとWindowsで違う。setlocale, _wsetlocale | Microsoft Learn C/C++での日本語文字列の扱い、どうすればよいか - minus9d's diary 標準出力にユニコードを出力させる - わびさびサンプルソースLinuxでは、 /* ヘッダファイルのインクルー…

wprintf(Windows)

Windowsのwprintfはややこしい。printf、_printf_l、wprintf、_wprintf_l | Microsoft Learn 書式指定構文: "printf" および "wprintf" 関数 | Microsoft Learn ワイド文字(C言語) - 超初心者向けプログラミング入門 iooiau blog: Visual C++ の wprintf の…

ワイド文字(Windows)

Windows + VisualC++だと、ワイド文字出力の方法に違いがある。マルチバイト文字とワイド文字 | Microsoft Learn 書式指定構文: "printf" および "wprintf" 関数 | Microsoft Learnwide_character.cで、 /* ヘッダファイルのインクルード */ #include <stdio.h> /* 標</stdio.h>…

mbstowcs

mbstowcsで、マルチバイト文字列からワイド文字列へ変換する。Man page of MBSTOWCSmbstowcs.cで、こう書く。 こうなる。こうなる。Sample/c/mbstowcs/mbstowcs/src/mbstowcs at master · bg1bgst333/Sample · GitHub

wcstombs

wcstombsで、ワイド文字列からマルチバイト文字列へ変換する。Man page of WCSTOMBSwcstombs.cで、こう書く。 第1引数をNULLにすると、必要なバッファサイズ(終端NULL文字含まない)を返すのだが、manにはなぜかはっきりとそう書いてない。 実行すると、こう…

mbtowc

mbtowcで、マルチバイト文字からワイド文字へ変換する。Man page of MBTOWCmbtowc.cで、test1.txtは、前回のUTF-8で'あ'だけのファイル。 test2.txtも、前回のEUC-JPで'あ'だけのファイル。 こうなるこうなる。 ここでは、mb2_ptrはEUC-JPロケールセットして…

wctomb

wctombで、ワイド文字からマルチバイト文字へ変換する。Man page of WCTOMBwctomb.cで、ロケールがUTF-8とEUC-JPしか入ってないので、その2つに変換する。 実行するとこうなり、実行するとこうなり、 test1.txtはUTF-8test1.txtはUTF-8。 test2.txtはEUC-JP…

ccs=UTF-32BE

UTF-32BEもできる。C言語のワイド文字入出力 | 雑記帳fopen.cで、こう書く。 開くと開くと、 認識できない認識できない。 サクラエディタなら、文字コードセットを12001のUTF-32BEにすればいける。サクラエディタなら、文字コードセットを12001のUTF-32BEに…