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

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

Войти
Регистрация
Восстановить пароль
 
Qiker
7 / 7 / 0
Регистрация: 08.04.2010
Сообщений: 56
#1

консоль - C++

07.05.2011, 12:04. Просмотров 684. Ответов 10
Метки нет (Все метки)

Есть файл с данными (большой текст, около 300 строк),
когда считываю данные оттуда и вывожу их на экран(в консоли) часть данных теряется
(начиная с заголовка и примерно одно окно консоли).

как избежать потери данных?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 12:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос консоль (C++):

консоль - C++
Напишите полезные ,и красивые скрипты для консоль ,на пример какие то эфекты при загрузки

Консоль - C++
Если в консоли зайти в свойства то там есть свойство размер окна! как мне его изменить???

Консоль - C++
Подскажите пожалуйста,не могу включить консоль в играх,обычно это буква ё,а что то не получается,консоль не включается,в чем причина,или...

Консоль - C++
Написал вот такую программу #include <windows.h> #include <conio.h> int main() { HWND...

Консоль - C++
Когда я создаю консольный проект, а первый уже закрыт, то после компеоляции и запуска у меня запускается предыдущая программа, как мне...

Консоль и C++ - C++
Допустим у меня есть выражение, значение которого я хочу подсчитать. Я ввожу это выражение, затем ввожу знак равенства нажимаю клавишу...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,270
Записей в блоге: 2
Завершенные тесты: 1
07.05.2011, 12:11 #2
Без кода сложно сказать, но скорее всего дело в том, что ф-ции вывода буферезируют вывод. Попробуй периодически очищать буфер, fflush() в помощь.
Qiker
7 / 7 / 0
Регистрация: 08.04.2010
Сообщений: 56
07.05.2011, 12:20  [ТС] #3
это с помощью fflush(stdin);
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,270
Записей в блоге: 2
Завершенные тесты: 1
07.05.2011, 12:22 #4
Нужно же буфер вывода очистить, так что fflush( stdout);
Qiker
7 / 7 / 0
Регистрация: 08.04.2010
Сообщений: 56
07.05.2011, 12:27  [ТС] #5
не помогает
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,270
Записей в блоге: 2
Завершенные тесты: 1
07.05.2011, 12:28 #6
Вообще-то проблема не совсем понятна, может нужно буфер консоли увеличить, чтоб весь текст влазил. Тут уже API нужно использовать.
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
07.05.2011, 12:29 #7
Попробуйте увеличить входной буфер.
Дайте код. Без него трудно разобраться...
Qiker
7 / 7 / 0
Регистрация: 08.04.2010
Сообщений: 56
07.05.2011, 12:41  [ТС] #8
Это часть кода:

C
1
2
3
4
5
6
7
8
9
10
11
save=fopen(way,"r");
        if (save == NULL) {perror("Ошибка при открытии файла");}
        else
        while (fscanf(save,"%c",&c)!=EOF) {
                        count++;
                        text=(char*)realloc(text,count*sizeof(char));
                        if (text==NULL) {
                        perror("         Ошибка при вводе");}
                        text[count-1]=c;
                        fflush(stdout);
                        }
Если нужно объясню как я выделял память под данные(хотя Вы поймете)
как увеличить буфер?

Добавлено через 4 минуты
а вот еще
C
1
2
int count=0;
char *text=NULL;
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
07.05.2011, 12:53 #9
Цитата Сообщение от Qiker Посмотреть сообщение
1

int count=0;
while (fscanf(save,"%c",&c)!=EOF) {
count++;
text=(char*)realloc(text,count*sizeof(char));
}
Смотрите: у вас в первой итерации цикла выделяется 1 байт, во второй выделяется 2 байта, в третей - 3 байта и т.д. и т.п.
Как тут не избежать потери данных??
Qiker
7 / 7 / 0
Регистрация: 08.04.2010
Сообщений: 56
07.05.2011, 13:07  [ТС] #10
а как избежать потери данных? может быть использовать двумерный массив?
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
07.05.2011, 13:46 #11
Я бы на вашем месте сделал бы так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HANDLE hFile, hFileMapping;
LPVOID buf;
hFile = CreateFile(...);
if(hFile != INVALID_HANDLE_VALUE)
{
    hFileMapping = CreateFileMapping(hFile,...)
    if(hFileMapping)
    {
        buf = MapViewOfFile(hFileMapping,...);
       // Здесь мы делаем всё, что захотим...:)
       //....
       UnmapViewOfFile(buf);
       CloseHandle(hFileMapping);
    }
    CloseHandle(hFile);
}
Добавлено через 1 минуту
А по байтам читать - это не серьёзно и не продуктивно...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2011, 13:46
Привет! Вот еще темы с ответами:

Консоль - C++
Можно ли в консольном приложении сделать так, чтобы саму консоль не было видно вообще?

Консоль - C++
Как сделать так , что бы при выполнении кода не появлялась консоль ?

Разноцветная консоль - C++
Всем доброго времени суток. Возник вопрос - как сделать так, чтоб в консоли текст был разноцветным (ну к примеру чтоб "hello" печатолась...

Вывод в консоль - C++
Код без ошибок (VS не ругается при компиляции)! Но консоль не хочет выводить сообщений.. В чем может быть проблема? В консоли виден...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.05.2011, 13:46
Ответ Создать тему
Опции темы

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