2012-02-01 7 views
0

私はFile.Butでいくつかのデータを書き込んでいますが、正しく書いていません。 コード:CFileはいくらかのガベージ値を書き込みます。

CString sFileName = "C:\\Test.txt"; 
CFile gpFile; 

    CString testarr[10] = {"Tom","Ger","FER","DER","SIL","REM","FWE","DWR","SFE","RPOP"}; 

    if (!gpFile.Open(sFileName,CFile::modeCreate|CFile::modeWrite)) 
    { 
     AfxMessageBox(sFileName + (CString)" - File Write Error");  
     return; 
    } 
    else 
    { 
     gpFile.Write(testarr,10); 
    } 

    AfxMessageBox("Completed"); 
    gpFile.Close(); 

それはあなたが間違ってCFileを使用しているので、おそらくです enter image description here

答えて

2

としてファイルを示しています。 CFile::Writeの最初のパラメータは、ファイルに書き込むバイトのバッファでなければなりません。しかし、testarrの各要素は文字列であり、文字列自体が一連のバイトであるため、testarrはバッファのバッファによく似ています。

代わりに行う必要があるのは、testarrの要素を連結してからCFile::Writeに電話することです。または、おそらくより現実的であるが、testarrを繰り返して、各文字列を一度に1つずつ印刷する。あなたの特定の例のために、あなたが探しているもの以下は、実行する必要があります。

for(int i = 0; i < 10; ++i) 
{ 
    gpFile.Write(testarr[i], strlen(testarr[i])); 
} 

これを実現するためにいくつかの組み込みの方法があるかもしれませんが、私はMFCと本当に慣れていないので、私はしません多くの助けを借りてください。

関連する問題