Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Алексей89
31 / 31 / 3
Регистрация: 19.02.2013
Сообщений: 118
#1

"4102" в конце файла при записи - C++

19.02.2013, 01:11. Просмотров 294. Ответов 2
Метки нет (Все метки)

Я не программист, я радиофизик, но у меня возникла необходимость написать программу на c++
Суть проблемы:
по нажатии на кнопку в файл пишутся некоторые значения массива.
но при работе в различных режимах, так или иначе файл заканчивается цифрами "4102" с новой строки.
По количеству значений видно, что эти цифры просто дописываются (не вместо последнего числа)
Мне не ясен источник этой особенности, как его корректноо устранить?
Код модуля:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void __fastcall TQAtab::ButtonSaveClick(TObject *Sender)
{
int A, B, step;
unsigned int i;
extern int Kstep, cntr,Rin, Rout, CSin, CCSout;
extern unsigned int Kcmb;
extern unsigned int *PRes;      //Pointer Residue - глобальный указатель на целевой массив
ofstream outfile("cmb.dat");    //Объявление потока
if (!outfile)           //блок выявляющий случаи, когда файл не удалось открыть (создать)
{
Memo1->Lines->Add(Now().TimeString()+": "+"Файл не удалось создать");
return;
}
i=0;    //i - счётчик элементов массива
A=EditA->Text.ToInt();
if ((A<0)||(A>Kcmb))    //Проверка корректности значения A
{
Memo1->Lines->Add(Now().TimeString()+": "+"Запись файла невозможна Задайте другую начальную точку");
return;
}
B=EditB->Text.ToInt();          //Определение параметров масштабирования записи
if ((B<A)||(B>Kcmb))    //Проверка корректности значения B
{
Memo1->Lines->Add(Now().TimeString()+": "+"Запись файла невозможна Задайте другую конечную точку");
return;
}
step=EditStep->Text.ToInt();
if ((step<0)||(step>(B-A)))    //Проверка корректности значения step
{
Memo1->Lines->Add(Now().TimeString()+": "+"Запись файла невозможна Задайте другой шаг");
return;
}
for (i=A;i<B;i=i+step)          //Цикл записи в файл
{
outfile << PRes[i]<<'\n';       //Запись значения c переносом на следующую строку
}
outfile << PRes[B];             //Запись последнего (В-го) значения (как правило, не соответствует шагу)
Memo1->Lines->Add(Now().TimeString()+": сохранено в значениях от "+A+" до "+B+" c шагом "+step);
outfile.close();
в качестве библии пользуюсь: А.Я. Архангельский "O+Builder 6 СПРАВОЧНОЕ ПОСОБИЕ", оттуда и взял шаблон записи в файл "с помощью потоков в стиле С++".
Извините если вопрос глупый.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 01:11     "4102" в конце файла при записи
Посмотрите здесь:

При выводе char* в конце строки "tr" - C++
struct List { char* inf; List* next; }; void AddToHead(List* &amp;head, char* inf) { List* p = new List; p-&gt;inf = inf; ...

"логическое" удаление записи из файла... - C++
Создаю простую БД. Как логически удалить выбранную запись из файла. При записи БД в служебное поле записывается порядковый номер записи,...

Необработанное исключение: "Нарушение прав доступа при записи" - C++
Подскажите в чём проблемма происходит ошибка при выполнение программы #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; ...

Нарушение прав доступа при записи "0x00000000" - C++
Как я понимаю ошибка где-то в указателях. Но вот что неправильно, мне непонятно. class CAR { private: char *prod; //...

Нарушение прав доступа при записи "0xabababab" - C++
Доброго времени суток начал прогу писать и тут меня компилятор удивил вот такой фигнёй : Необработанное исключение в &quot;0x773d15de&quot; в...

Нарушение прав доступа при записи "0x0000000c" - C++
12.cpp // 12.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include...

Ошибка "Нарушение прав доступа при записи" - C++
Похоже я полный неудачник по программированию, так как даже элементарные программы у меня отказываются работать с выводом ошибки &quot;Нарушение...

0xC0000005: Нарушение прав доступа при записи "0xcccccccc". Инициализация строк - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; using namespace std; class Stroka {char*...

Ошибка при быстрой сортировке файла: "string subscript out of range" - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

"Stack around the variable 'a' was corrupted" при выводе содержимого файла на экран - C++
Доброго времени суток, компиляции программы вылетает такая ошибка Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
19.02.2013, 10:46     "4102" в конце файла при записи #2
Цитата Сообщение от Алексей89 Посмотреть сообщение
for (i=A;i<B;i=i+step) //Цикл записи в файл { outfile << PRes[i]<<'\n'; //Запись значения c переносом на следующую строку } outfile << PRes[B];
а не
C++
1
 outfile << PRes[B-1]
ну или у тебя в массиве массиве точно есть В-ый элемент
Алексей89
31 / 31 / 3
Регистрация: 19.02.2013
Сообщений: 118
19.02.2013, 17:11  [ТС]     "4102" в конце файла при записи #3
Цитата Сообщение от aLarman Посмотреть сообщение
ну или у тебя в массиве точно есть В-ый элемент
Действительно В-го элемента не оказалось, оказывается если массив определён как:
C++
1
unsigned int *Res = new unsigned int [B];
то элементы определены в диапазоне от 0 до В-1, всего В элементов.
Спасибо
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru