Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

Откуда берется ОН?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
6-10322
nemec
2003-05-27 21:18
2003.08.04
Сообщения в WebBrowser


7-10473
Siemens
2003-05-22 12:54
2003.08.04
Как использовать MODEM или локалку в DELPHI!


14-10361
Кен
2003-07-13 05:45
2003.08.04
Как начинающему въезжать в базы данных ?


14-10349
Aga
2003-07-16 18:57
2003.08.04
Перенос программ


1-10220
Someone Who Need You Help
2003-07-19 21:09
2003.08.04
Автоопределение кодировки...