なお、ReadFileは用いていないので、前トピックのReadFileのトピックとは別に、新規のトピックを作成しました。
下記のようなCSVファイルを作成しました。
test.txt
これを読み取ろうと、まず、2行目1列目のモンスター名「slime」を読み取るつもりのプログラムを書きました。(slimeだけモンスター名が英語なのは、日本語にすると表示がバグるから。このバグを解決したい。)
まず、インクルードやグローバル変数の宣言は
#include <stdio.h> // fopen_s, fclose, fgets
#include <stdlib.h> // mbstowcs
#include <string.h> // strchr
#include <locale.h> // setlocale
#pragma warning(disable:4996)
wchar_t wbuf[100];
size_t n2;
wWinMain では
// TODO: ここにコードを挿入してください。
FILE *fp;
char str1[100];
// char str2[100];
fopen_s(&fp, "test.txt", "r");
fgets(str1, 100, fp);
fgets(str1, 100, fp);
fclose(fp);
char *n_pos = strchr(str1, '\n');
if (n_pos) *n_pos = '\0'; // erase '\n'
n2 = mbstowcs(wbuf, str1, 100);
mbstowcs(wbuf, str1, 100);
char wordsss[100]; // 一時的な変数
char *kanma_pos = strchr(str1, ',');
// if (kanma_pos) *kanma_pos = '\0'; // erase '\n'
strncpy(wordsss, str1, kanma_pos - str1);
//
n2 = mbstowcs(wbuf, wordsss, (kanma_pos - str1) / sizeof(char));
WM_PAINT では を作成しました。
テストした結果、英数字は読み取りできて「slime」と座標 (30,80) の位置に表示できるのですが、
しかしテキストファイルの「slime」を「スライム」と日本語にすると、文字化けをします。
最終的に、日本語が表示できないと、日本人向けのアプリケーションにならないので、なんとかしたいのです。