fwrintfでテキストファイルに表示するには

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たこやき

fwrintfでテキストファイルに表示するには

#1

投稿記事 by たこやき » 15年前

fwprintfでテキストファイルに表示されないのですが。
void inEditString(TCHAR listboxstr[256][256])
{
int strcount=0,count2=0,count3=0,flag=0;
TCHAR editstr[MAX_ST[/url];
TCHAR listboxstrbuffer[256][256];

GetWindowText(editbox2,editstr,256);

fp=_wfopen(_T("Listbox2.txt"),_T("r+"));
if(fp==NULL)
{
MessageBox(hWnd,_T("ファイルが開きません。"),_T("エラー"),MB_OK);
}

while(fwscanf(fp,_T("%s"),listboxstr[strcount])!=EOF)
{
strcount++;
}
while(count2<(strcount+1))
{
if(flag==0)
{
if(wcscmp(editstr,listboxstr[count3])>=NULL)
wcscpy(listboxstrbuffer[count2],editstr);
count2++;
flag=1;
}
wcscpy(listboxstrbuffer[count2],listboxstr[count3]);
count2++;
count3++;
}
fclose(fp);
fp=_wfopen(_T("Listbox2.txt"),_T("w"));
if(fp==NULL)
{
MessageBox(hWnd,_T("ファイルが開きません。"),_T("エラー"),MB_OK);
}
strcount=0;
while(strcount<count2)
{
fwprintf(fp,_T("%s"),listboxstrbuffer[strcount]);

strcount++;
}
}
なのですが、変な変数名がありますが気にしないでください、
ブレイクポイントをfwprintf(fp,_T("%s"),listboxstrbuffer[strcount]);
の所にやったのですが、listboxstrbuffer[strcount]の所を表示させたのですが、
文字列は入っているのにそして再実行するとテキストファイルに表示されません。
なぜでしょうか?

たかぎ

Re:fwrintfでテキストファイルに表示するには

#2

投稿記事 by たかぎ » 15年前

処理系不明ですが...
ロケールの設定はどうなっていますか?

gazu

Re:fwrintfでテキストファイルに表示するには

#3

投稿記事 by gazu » 15年前

fwprintfの戻り値を確認してみてはどうでしょう?
もし戻り値が0より大きいならば、テキストファイルをバイナリエディタで
開いてみてはどうでしょうか?

たこやき

Re:fwrintfでテキストファイルに表示するには

#4

投稿記事 by たこやき » 15年前

たかぎさん朝早くに回答ありがとうございます。
処理系はVC++2005です。
ローケルとは何でしょうか?
勉強不足ですみません。


gazuさん朝早くに回答ありいがとうございます。
テキストファイルで開いて見ましたが何も書かれていませんでした。
_wfopenをバイナリエディタに設定して見ましたが共有違反と書かれ開けませんでした。
なぜでしょうか?

たこやき

Re:fwrintfでテキストファイルに表示するには

#5

投稿記事 by たこやき » 15年前

すみません。できました。
_wfopenをバイナリエディタに設定して見ましたがちゃんと表示されました。
ただプログラム終了しないと書き込まれません。
なぜでしょうか?
またファイルエディタでは開けないのでしょうか?

たこやき

Re:fwrintfでテキストファイルに表示するには

#6

投稿記事 by たこやき » 15年前

度々すみません。バイナリで書き込んで終了して
バイナリエディタで再度開くと文字化けしてでます。(listbox2.txtで開き直すと文字化けします。)

たいちう

Re:fwrintfでテキストファイルに表示するには

#7

投稿記事 by たいちう » 15年前

> fwprintfでテキストファイルに表示されないのですが。

> 文字列は入っているのにそして再実行するとテキストファイルに表示されません。

> _wfopenをバイナリエディタに設定して見ましたが共有違反と書かれ開けませんでした。

> _wfopenをバイナリエディタに設定して見ましたがちゃんと表示されました。

> 度々すみません。バイナリで書き込んで終了して
> バイナリエディタで再度開くと文字化けしてでます。
> (listbox2.txtで開き直すと文字化けします。)


落ち着いて何をしたいのか説明してください。正しい日本語で。
相手に伝わるかどうかを必ず読み返してから投稿してください。
UNICODEでテキストファイルに書き込みたい、ということですか?

たこやき

Re:fwrintfでテキストファイルに表示するには

#8

投稿記事 by たこやき » 15年前

返信ありがとうございます。
>UNICODEでテキストファイルに書き込みたい、ということですか?
はい。そうです。
_wfopenをバイナリエディタ各(r+b)と(w+b)と変更しましたが
文字列がテキストファイルに書き込みされません。ファイルエディタとバイナリエディタ
どちらともなんですが、実行したあと、サイズを見ると1kbyte使っています。
このテキストファイル(rとw)のバイナリエディタで確認したら機械語0D 0A
でバイナリでやったファイル(r+bとw+b)をバイナリエディタで認したら機械語で0A 00だけ
表示されます。

たいちう

Re:fwrintfでテキストファイルに表示するには

#9

投稿記事 by たいちう » 15年前

色々勘違いしているみたいですね。
次のコードを実行できますか?
私の環境では正常に書き込めますが。
#include <stdio.h>
#include <locale.h>

int main() {
    _wsetlocale(LC_ALL, L"");
    FILE *fp = _wfopen(L"test.txt", L"w");
    fwprintf(fp, L"てすと");
    fclose(fp);
    return 0;
}

たこやき

Re:fwrintfでテキストファイルに表示するには

#10

投稿記事 by たこやき » 15年前

なんとか自己解決しました。
原因はわかりませんが。
回答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る