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

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

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

консоль - C++

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

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

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

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 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
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
07.05.2011, 12:22     консоль #4
Нужно же буфер вывода очистить, так что fflush( stdout);
Qiker
7 / 7 / 0
Регистрация: 08.04.2010
Сообщений: 56
07.05.2011, 12:27  [ТС]     консоль #5
не помогает
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
07.05.2011, 12:28     консоль #6
Вообще-то проблема не совсем понятна, может нужно буфер консоли увеличить, чтоб весь текст влазил. Тут уже API нужно использовать.
prZzZ
Программист
110 / 90 / 5
Регистрация: 22.03.2011
Сообщений: 233
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
Программист
110 / 90 / 5
Регистрация: 22.03.2011
Сообщений: 233
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
а как избежать потери данных? может быть использовать двумерный массив?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2011, 13:46     консоль
Еще ссылки по теме:

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

Закрывается консоль - C++
#include <iostream> using namespace std; int main() { double g, f; cout << "vvedit chislo galonov" << endl; cin >> g; ...

Исчезает консоль - C++
Программа компилируется,но окно выполнения быстро исчезает #include <iostream> #include <fstream> using namespace std; int main(int...

Консоль и изображения - C++
Возник вопрос, можно ли в консоли вывести цветное изображение каким-нибудь левым способом (например двумерный массив точек), или все же...

не открывается консоль - C++
Ребята, у меня что-то плохое произошло с Visual Studio 2008. Пытаюсь запустить проект, он его собирает, однако консоль не появляется...


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

Или воспользуйтесь поиском по форуму:
prZzZ
Программист
110 / 90 / 5
Регистрация: 22.03.2011
Сообщений: 233
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 минуту
А по байтам читать - это не серьёзно и не продуктивно...
Yandex
Объявления
07.05.2011, 13:46     консоль
Ответ Создать тему
Опции темы

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