Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание и заапись в текстовый файл 
:(
    Опции темы
griker
Дата 1.1.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MDMA
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.7.2006
Где: Tallinn

Репутация: нет
Всего: 8



переменная text типа value CString text edit, при нажимании на кнопку создается фаил(если такого еще нет) и записывается в него инфа (добавляется)
Код

void CtestDlg::OnBnClickedButton1()
{
    //int creatFile;
    //creatFile=_creat("filelog.txt",S_IREAD | _S_IWRITE);
    _sopen_s(0, "write.txt", _O_RDWR | _O_CREAT | _O_APPEND,_SH_DENYNO, _S_IREAD | _S_IWRITE);
    _write(0, text, sizeof(text));
}

Прошу проверить это на корректность и правильность.
MVS 08 компилит, запускает, а затем при нажатии на кнопку выскакивает
Microsoft Visual Studio C Runtime Library has detected a fatal error in test.exe.

прошу помощи  smile  спасибо)


--------------------
I don't respect police
PM MAIL   Вверх
maxim1000
Дата 1.1.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



стоит почитать документацию по _sopen_s и _write
а то не совсем понятно, как _write в данном коде может знать, в какой именно файл писать
кроме того, сильно подозреваю, что нужно ещё не забыть закрыть файл соответствующим образом

попробую предложить альтернативный вариант:
Код

{
    std::ofstream file("write.txt");
    file<<text
}

(файл будет закрыт автоматически)


--------------------
qqq
PM WWW   Вверх
Dmi3ev
Дата 2.1.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: нет
Всего: 41



Код

using namespace std;
//...
{
   ofstream file;
   file.open("1.txt", ios::app); //если нужно дописывать, если нет (каждый раз надо создавать новый), то file.open("1.txt"); 
   file<<text;
   file.close();
}
//...


Это сообщение отредактировал(а) Dmi3ev - 2.1.2009, 17:13


--------------------

PM MAIL   Вверх
shara
Дата 13.1.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



для работы с файлами в данном случае я б использовал API-функции, но это дело вкуса каждого:

Код


#include <Windows.h>


// много строчек кода

// создаем файл если его нет, или открывает для дозапси если таковой имеется
HANDLE  hFile = CreateFile("write.txt", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS,
                                            FILE_ATTRIBUTE_NORMAL, NULL); 
if (hFile == NULL)
{
/////// ОШИБКА СОЗДАНИЯ ФАЙЛА!
        MessageBox(NULL,_T("Открытия файла \r\n"),_T("Ошибка"),MB_OK);
        return(0);
}
SetFilePointer(hFile, 0, 0, FILE_END); // писать в  конец файла

DWORD bytesWritten=0; // количество записанных на диск байт
WriteFile(hFile, text, sizeof(text), &bytesWritten , NULL); // собсно пишем то что нужно

// необязательная проверка но всеже перестр###мся от возможных ошибок записи в файл
if (bytesWritten != sizeof(text))
{
         MessageBox(NULL,_T("Записи в файл \r\n"),_T("Ошибка"),MB_OK);
         return(0);
}

CloseHandle(hFile); 
// вроде все



должна работать, но признаюсь на компиляторе не проверял..  smile

Добавлено @ 21:58
 smile   
Цитата(shara @  13.1.2009,  20:56 Найти цитируемый пост)
// необязательная проверка но всеже перестр###мся от возможных ошибок записи в файл

цензура однако  smile 

Это сообщение отредактировал(а) shara - 13.1.2009, 22:01


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
ZeroPoint
Дата 20.1.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Так работает у меня. VS2005.
Код

void CtestDlg::OnBnClickedButton1()
{
    //int creatFile;
    //creatFile=_creat("filelog.txt",S_IREAD | _S_IWRITE);

//    _sopen_s(0, "write.txt", _O_RDWR | _O_CREAT | _O_APPEND,_SH_DENYNO, _S_IREAD | _S_IWRITE);
//    _write(0, text, sizeof(text));

    char* text = "Just test string\n";
    int iFileNum = 0;

    _sopen_s( &iFileNum, "write.txt", _O_RDWR | _O_CREAT | _O_APPEND, _SH_DENYNO, 0x0080 ); // _S_IWRITE == 0x0080
    if( iFileNum == -1 )
        return;

    _write( iFileNum, text, (int) strlen(text) );

    _close( iFileNum );
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1214 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.