Форум: "Потрепаться";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизОткуда берется ОН? Найти похожие ветки
← →
VEG (2003-07-16 14:44) [0]Сперва открываю файл на чтение:
fCfg.open("data.txt", ios::in);
. Потом, если файл открылся, читаю данные, закрываю файл. Через некоторый паромежуток времени открываю его же на запись:fCfg.open("data.txt", ios::out);
Если файл успешно перезаписался и открылся, записываю данные и закрываю его.
Но вот происходит что-то не то: Если файла до открытия его на запись не существовало, то все проходит Окей. НО если файл уже существовал, вместо него, если надо, создается, а потом открывается файл "00". Файл "data.txt" остается не измененным! И так каждый раз! Почему так происходит?
← →
VEG (2003-07-16 18:11) [1]Понятно. Это глюк. Вот код:
/* Компилятор: BC++ 5 */
fstream fCfg;
fCfg.open("text.txt", ios::in);
if(fCfg.is_open())
while(!fCfg.eof())
{
string sRead;
fCfg >> sRead;
int iValue;
/****************************Виновник происходящего****************************/
iValue = atoi(sRead.data());// Все из-за этой ...
pchar sValue = "";
itoa(iValue, sValue, 10);
/* pchar sValue = "";
itoa(iValue, sValue, 10); // ... и этой операции!!! */
/*Для того, чтобы глюк сработал, нужно при чтении файла
обязательно использовать функции atoi и itoa в любом порядке*/
/******************************************************************************/
}
fCfg.close();
/***Без этого куска при повторном выполнении кода запись ведется в файл "00"***/
/*
fCfg.open("text.txt", ios::in);
fCfg.close();
*/
/******************************************************************************/
fCfg.open("text.txt", ios::out);
if(!fCfg.is_open()) return;
fCfg << "100"; // Тут обязательно должно быть число!
fCfg.close();
Скорее всего, в машинном виде код делает еще что-то...
← →
VEG (2003-07-16 18:16) [2]Код запускайте 2 (ДВА) раза. За первый проход создастся файл.
← →
VEG (2003-07-16 18:25) [3]
/* Компилятор: BC++ 5 */
fstream fCfg;
fCfg.open("text.txt", ios::in);
if(fCfg.is_open())
while(!fCfg.eof())
{
string sRead;
fCfg >> sRead;
int iValue;
/****************************Виновник происходящего****************************/
iValue = atoi(sRead.data());// Все из-за этой ...
pchar sValue = "";
itoa(iValue, sValue, 10); // ... и этой операции!!! */
/*Для того, чтобы глюк сработал, нужно при чтении файла
обязательно использовать функции atoi и itoa в любом порядке*/
/******************************************************************************/
}
fCfg.close();
/***Без этого куска при повторном выполнении кода запись ведется в файл "00"***/
/*
fCfg.open("text.txt", ios::in);
fCfg.close();
*/
/******************************************************************************/
fCfg.open("text.txt", ios::out);
if(!fCfg.is_open()) return;
fCfg << "100"; // Тут обязательно должно быть число!
fCfg.close();
← →
VEG (2003-07-16 18:39) [4]/* Компилятор: BC++ 5 */
#include <fstream.h>
fstream fCfg;
fCfg.open("text.txt", ios::in);
if(fCfg.is_open())
while(!fCfg.eof())
{
string sRead;
fCfg >> sRead;
int iValue;
/****************************Виновник происходящего****************************/
iValue = atoi(sRead.data());// Все из-за этой ...
PCHAR sValue = "";
itoa(iValue, sValue, 10); // ... и этой операции!!! */
/*Для того, чтобы глюк сработал, нужно при чтении файла
обязательно использовать функции atoi и itoa в любом порядке*/
/******************************************************************************/
}
fCfg.close();
/***Без этого куска при повторном выполнении кода запись ведется в файл "00"***/
/*
fCfg.open("text.txt", ios::in);
fCfg.close();
*/
/******************************************************************************/
fCfg.open("text.txt", ios::out);
if(!fCfg.is_open()) return;
fCfg << "100"; // Тут обязательно должно быть число!
fCfg.close();
← →
Suntechnic (2003-07-16 18:40) [5]Да какой там ещё глюк. Лучше расскажи кто тебя так учил в С со строками обращаться? Вот тебе и весь глюк.
← →
VEG (2003-07-16 18:43) [6]Черт, нормальную версию так и не выложил:(
← →
VEG (2003-07-16 18:44) [7]
/* Компилятор: BC++ 5 */
#include <fstream.h>
fstream fCfg;
fCfg.open("text.txt", ios::in);
if(fCfg.is_open())
while(!fCfg.eof())
{
string sRead;
fCfg >> sRead;
int iValue;
/****************************Виновник происходящего****************************/
iValue = atoi(sRead.data());// Все из-за этой ...
PCHAR sValue = "";
itoa(iValue, sValue, 10); // ... и этой операции!!! */
/*Для того, чтобы глюк сработал, нужно при чтении файла
обязательно использовать функции atoi и itoa в любом порядке*/
/******************************************************************************/
}
fCfg.close();
/***Без этого куска при повторном выполнении кода запись ведется в файл "00"***/
/*
fCfg.open("text.txt", ios::in);
fCfg.close();
*/
/******************************************************************************/
fCfg.open("text.txt", ios::out);
if(!fCfg.is_open()) return;
fCfg << "100"; // Тут обязательно должно быть число!
fCfg.close();
← →
NickBat (2003-07-16 18:45) [8]Тихо сам с собою я веду беседу....
← →
Fantasist. (2003-07-16 19:08) [9]VEG ©, а не пошел бы ты... на форум по С++. Тут народ, конечно, тоже ответить может, но не в тематику явно. А еще лучше, сам поразбирайся, прежде чем постить сообщения в таком количестве.
← →
VEG (2003-07-16 19:10) [10]Так я разобрался. Это точно ГЛЮК. Как может операции перевода INT & STR повлиять на запись ЕЩЕ НЕ ОТКРЫТОГО файла.
← →
Suntechnic (2003-07-16 19:16) [11]>VEG ©
Это точно ГЛЮК.
Ну... ну... считай так и дальше, если не привык читать, что тебе пишут.
>Fantasist.
Тут народ, конечно, тоже ответить может, но не в тематику явно.
Я тебя умоляю. А обсуждать почему одна даёт, а другая не даёт это явно в тематику форума? По мне так уж лучше людей на путь истинный в С++ наставлять...
← →
Fantasist. (2003-07-16 19:21) [12]
> Я тебя умоляю. А обсуждать почему одна даёт, а другая не
> даёт это явно в тематику форума?
Ну так потрепаться, оно и есть потрепаться. А если человек интересуется именно программированием на С++, то идти надо в соответсвующий форум.
← →
VEG (2003-07-16 19:35) [13]А как надо обращаться со строками?
← →
Suntechnic (2003-07-16 19:42) [14]А как надо обращаться со строками?
Как минимум писать что-то типа этого
PCHAR sValue[65];
itoa(iValue, sValue, 10);
← →
Fantasist. (2003-07-16 23:45) [15]
> PCHAR sValue[65];
Ну это перебор. Достадочно char[65]. Массив указателей не нужен.
← →
Suntechnic (2003-07-16 23:55) [16]>Fantasist.
Сорри, конечно же массив char, а не указателей. Голова к вечеру и так не варит, а тут ещё VEG © со своими якобы глюками :)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c