ccs(Windows)

Windowsのfopenにもccsがあるが、類似機能であり、内容は結構違う。

fopen、_wfopen | Microsoft Learn
C言語のワイド文字入出力 — MSVCRTの場合 | 雑記帳

fopen.cで、

/* ヘッダファイルのインクルード */
#include <stdio.h>	/* 標準入出力 */
#include <locale.h>	/* ロケール */

/* main関数の定義 */
int main(void){

	/* 変数の宣言 */
	FILE *fp1;
	FILE *fp2;

	/* ファイルを開く. */
	fp1 = fopen("test1.txt", "w,ccs=UNICODE");	/* fopenで"test1.txt"を開く. */
	if (fp1 == NULL){	/* 失敗. */
		perror("fopen 1");
		return -1;
	}

	/* マルチバイト文字列で"あいうえお"を出力. */
	fprintf(fp1, "%s", "あいうえお");	/* fprintfで"あいうえお"を出力.

	/* 閉じる. */
	fclose(fp1); /* fcloseでfp1を閉じる. */

	/* ファイルを開く. */
	fp2 = fopen("test2.txt", "w, ccs=UNICODE");	/* fopenで"test2.txt"を開く. */
	if (fp2 == NULL){	/* 失敗. */
		perror("fopen 2");
		return -2;
	}

	/* ワイド文字列でL"あいうえお"を出力. */
	fwprintf(fp2, L"%s", L"あいうえお");	/* fwprintfでL"あいうえお"を出力. */

	/* 閉じる. */
	fclose(fp2); /* fcloseでfp2を閉じる. */

	/* プログラムの終了 */
	return 0;

}

test1.txtでは、"w,ccs=UNICODE"というようにカンマ(',')と"css"の間を空けない。
test2.txtでは、"w, ccs=UNICODE"というようにカンマ(',')と"css"の間を空ける。(これはLinuxではできないらしい。)
UNICODEは、UTF-16LEのこと。
ロケールも特にセットしてない。

なんで?!
なんで?!

なんで?!
調べたら、

UNICODEのサポート

fprintfがUNICODE変換出力に対応してないらしい。

両方とも、fwprintfにした。

どっちもUNICODE出力できた
どっちもUNICODE出力できた

どっちもUNICODE出力できた。
(ロケールはセットしなくていいんかな・・・。)

Sample/c/fopen/ccs_Windows/src/fopen at master · bg1bgst333/Sample · GitHub