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

Блуждающая ошибка! F5- без ошибки, Ctrl+F5 - с вылетом! о как! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ветвление http://www.cyberforum.ru/cpp-beginners/thread623577.html
я начал учить с++, уже второй день........... написал алгоритм с ветвлением #include <stdio.h> #include <iostream.h> #include <conio.h> int main(int nNumberofArgs, char*pzArgs)...
C++ Узнать запущена ли служба Windows Как узнать запущена ли оперделенная служба Windows, если конкретно служба управления подключениями удаленного доступа. Т.е моей программке находящейся в автозапуске нужно ждать покаместь служба не... http://www.cyberforum.ru/cpp-beginners/thread623576.html
Вычисление среднего балла C++
Прошу, подскажите как можно реализовать следующее задание: вычислить средний балл по каждому студенту и по каждой дисциплине, количество задолженностей и количество задолженников по группе. Заранее...
C++ Каков синтаксис оператора <?( меньше )
Надо было написать программу, считывающую количество слов, которые пользователь хочет ввести, затем программа считывает каждое слово и потом выводит 3 наиболее часто встречающихся слов. Я решил...
C++ случайные числа http://www.cyberforum.ru/cpp-beginners/thread623509.html
rand() в VS имеет диапазон от 0 до 32768? даже изменение RAND_MAX ничего не повысит верхний уровень?
C++ Разный доступ к элементам структуры через указатель Всем добрый вечер! Есть структура и два указателя на структуру. Первый указатель выделяет память для единичного значения а второй для массива. И вот в чем вопрос. Почему для обращения к элементам... подробнее

Показать сообщение отдельно
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
14.07.2012, 15:47  [ТС]
Тогда нужно продолжить.
Метод load - немного подправил, картина стала лучше! Но осталась проблема та же, но более понятней, переполнение буфера, у меня стоит 38 этого мало, но ставить заоблачные величины я не хочу. Туда -же реально записывается только три строковых значения. Как мне обновлять этот буфер или регенерировать, чтоб он не занимал много памяти???
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
void load(){
    char *buf=new char[38], *t;
    n=0;
    Student *tmp;
    delete[]stud;
    stud=new Student[n];
        FILE *f=fopen("temp.txt","rt");
 
        while(fgets(buf,38,f)!=0){
            tmp=new Student[n+1];
            for(int i=0;i<n;i++)
                tmp[i]=stud[i];
            delete[]stud;
            stud=tmp;
        t=strstr(buf,", ");
        delete[]stud[n].name;
        stud[n].name=new char[t-buf+1];
        strncpy(stud[n].name,buf,t-buf);
        stud[n].name[t-buf]='\0';
        buf= t+2;
        t=strstr(buf,", ");
        delete[]stud[n].surname;
        stud[n].surname=new char[t-buf+1];
        strncpy(stud[n].surname,buf,t-buf);
        stud[n].surname[t-buf]='\0';
        buf= t+2;
        stud[n].year=atoi(buf);
        n++;
        strcpy(buf,"");
        }
        fclose(f);
}
ЗЫ: Конечно спасибо за решение но я как нибудь сам хочу писать. У меня чтоб стать профессионалом только два года, а потом работа и никаких там решений не будет.

Добавлено через 18 минут
То есть когда запускаешь без отладки (Ctrl+F5) оно один раз считывает 3 записи студент без проблем, и два раза может считать, но могут быть глюки с выводом, а на третий раз запуска load, она вылетает. Если число буфера сделать большим проблема отодвигается, как бы исчезает, но я так понимаю не решается.
При запуске F5(с отладкой) проблемы как-бы не существует.

Добавлено через 11 часов 51 минуту
Все решено!
после открытия файла нужно добавить такую конструкцию:
C++
1
2
3
4
5
6
7
8
        if(f== NULL){
            cout<<"Eror File ne udalosi otkriti!!!!";
            return;}
 
//Главным образом ту что ниже.
        fseek(f, 0, SEEK_END);
        buf=(char*) malloc(ftell(f)+1);
        fseek(f, 0, SEEK_SET);
тогда под буфер будет выделено места строго по размеру открываемого файла, и лишнее место использоваться не будет.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru