ccs=UNICODE(Windows)

cssにはUNICODEも指定できる。

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

fopen.cで、

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

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

	/* 変数の宣言・初期化 */
	char *loc;
	FILE *fp1;
	FILE *fp2;
	char buf1[16] = {0};
	wchar_t buf2[16] = {0};

	/* "Japanese_Japan.932"指定 */
	loc = setlocale(LC_ALL, "Japanese_Japan.932");	/* setlocaleにLC_ALL, "Japanese_Japan.932"を指定. */
	printf("loc = %s\n", loc);	/* locを出力. */

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

	/* ファイル入力データをマルチバイト文字列として格納. */
	fscanf(fp1, "%s", buf1);	/* fscanfでbuf1に格納. */
	printf("%s\n", buf1);	/* buf1を出力. */

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

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

	/* ファイル入力データをワイド文字列として格納. */
	fwscanf(fp2, L"%s", buf2);	/* fwscanfでbuf2に格納. */
	wprintf(L"%s\n", buf2);	/* buf2を出力. */

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

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

}

とすると、

やっぱりscanfもダメか。
やっぱりscanfもダメか。

やっぱりscanfもダメか。
ということで、

どっちもfwscanf。

これだと読み込めた。
これだと読み込めた。

これだと読み込めた。

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