C言語でWindowsプログラミングをしているのですが、文字がうまく扱えなくて困っています。
txtファイルから読み込んだ文字を"@@"のところで区切って、ウィンドウに描画するだけなのですが、うまくできません。
例)
contents.txtファイル(以下中身です。)
データ整理@@ファイル、フォルダをインポート@@アドレスからインポート@@txtとpdf(html,jpg,bmp)を等価に扱う@@検索@@タグ
これをウィンドウに
データ整理
ファイル、フォルダをインポート
アドレスからインポート
txtとpdf(html,jpg,bmp)を等価に扱う
検索
タグ
というように表示したいのですが、なぜか
データ整理
ファイル、フォルダをインポートアドレスからインポート
アドレスからインポート
txtとpdf(html,jpg,bmp)を等価に検索
検索
タグ
のように表示されてしまいます。
(二段目と四段目がおかしくなっています、書き間違えではないです、念のため)
初心者なので、勉強不足による些細な間違いかもしれませんが、なにとぞ知恵をお貸しくださいm(_ _)m
以下、ソースコードのメッセージ処理部分です。
ウィンドウ生成のひな型は問題ないと判断しました。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
static int i = 0, j = 0, k = 0;
int fp;
HDC hdc;
PAINTSTRUCT ps;
char script[1000];
static char title[100][30];
switch (msg){
//ウィンドウ生成時
case WM_CREATE:
fp = Reading("./contents.txt", script);
if(fp == -1){
MessageBox(hWnd, (LPCSTR)"contents.txtが存在しない",
(LPCSTR)"ERROR", MB_OK | MB_ICONEXCLAMATION);
}else{
for(;;){
if(script[i] == '\0'){
title[j][k] = '\0';
break;
}else if(script[i] == '@' && script[i+1] == '@'){
title[j][k] = '\0';
i += 2;
j++;
k = 0;
}else{
title[j][k] = script[i];
i++;
k++;
}
}
for(i = 0; i <= j; i++){
}
}
break;
//ウィンドウの描画
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
SetBkMode(hdc, TRANSPARENT);
for(i = 0; i <= j; i++){
TextOut(hdc, 0, MOJI_SIZE * i, (LPSTR)title[i], strlen(title[i]));
}
EndPaint(hWnd, &ps);
break;
//ウィンドウの削除
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
//読み込み
int Reading(const char* filename, char* script)
{
int pos = 0;
char c;
//スクリプトファイル
FILE* fp;
//スクリプトファイルを開く
fp = fopen(filename, "r");
if( fp == NULL ) {
//ファイル読み込みに失敗
return -1;
}
for( ;; ) {
//一文字読み込み
c = fgetc( fp );
//ファイルの終わりかどうか
if( feof( fp ) ) {
script[pos] = '\0';
break;
}
//改行文字が出てきた場合,無視
if( c != '\n' && c != '\t' ) {
//書き込み
script[pos] = c;
//文字書き込み位置をずらす
pos++;
}
}
fclose(fp);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
winsock recvでの文字化け
-
テキストファイルの行数を取得...
-
0バイトファイルの作成
-
C言語 バイナリファイルの読み...
-
バイナリファイルをテキストフ...
-
c言語 2つのファイルを行ご...
-
プログラミング初心者です。
-
どんなプログラムを書いても指...
-
windows.hがincludeされない
-
C言語初心者の質問失礼します。
-
EXCEL VBAでテキストファイルの...
-
マイクラでPythonのプログラミ...
-
バッファとは何ですか
-
ネットワーク上のコンピュータ...
-
フルパスから最後のディレクト...
-
フォルダ名をだすには
-
xismoについてです!開こうとす...
-
フレームワークについて
-
エクセルVBA 2千万行のCSVファ...
-
FTPでputすると空ファイルが出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内のデータを1行削除...
-
バイナリファイルをテキストフ...
-
fgetsで2行目から文字化け
-
テキストファイルの行数を取得...
-
c言語 2つのファイルを行ご...
-
C言語での改行コードの扱いにつ...
-
VBSで指定行に挿入
-
改行までの一文字ずつのファイ...
-
【VB.Net】バイト型配列に読み...
-
freadとfwrite
-
巨大なテキストファイル(可変...
-
0バイトファイルの作成
-
fopen(書き込みモード)でファイ...
-
fopenで開いたファイルのサイズ...
-
winsock recvでの文字化け
-
ファイルサイズ指定し、ファイ...
-
fortranで文字列を読み込む際の...
-
【C言語】テキスト読み込みの行...
-
C言語での採番について
-
VS2010 MFC CStdioFileについて
おすすめ情報