CFile записывает некоторую стоимость мусора
Я записываю некоторые данные в File.But, но он не пишет это правильно. Код:
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();
Он показывает файл как
1 ответ
Это, вероятно, потому что вы используете CFile
неправильно. Первый параметр для CFile::Write
должен быть буфер, байты которого вы хотите записать в файл. Тем не мение, testarr
больше похоже на "буфер буферов", так как каждый элемент testarr
является строкой, а сама строка является последовательностью байтов.
Вместо этого вам нужно либо объединить элементы testarr
, а затем позвоните CFile::Write
, Или (возможно, более практичный), перебрать testarr
печатая каждую строку по одной, например, для вашего конкретного примера, следующее должно делать то, что вы ищете:
for(int i = 0; i < 10; ++i)
{
gpFile.Write(testarr[i], strlen(testarr[i]));
}
Может быть какой-то встроенный способ сделать это, но я не очень знаком с MFC, поэтому мне там особо не помогут.