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

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

Войти
Регистрация
Восстановить пароль
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

Считывание из файла в char - при выводе выводится лишнее - C++

26.03.2013, 11:19. Просмотров 851. Ответов 3
Метки нет (Все метки)

Считываю из файла в строку типа char, если у меня в строке меньше 16 символов, то при выводе выводится какой-то мусор, наверное связано с неправильным выделением памяти, пробовал выделять ее различными способами и через malloc и через new char - такая ошибка остается

если вывожу text в цикле (text[i] i++) то выводятся знаки = вместо символов, вообщем совсем меня запутали эти char - если не сложно то самый простенький пример считывание из файла с правильным распределением памяти

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <fstream>
using namespace std; 
 
void main ()
{   
    fstream f;
    f.open ("in.txt", ios::in); 
    int i=0;
    char k;
    char *text=new char;
    while(!f.eof())
        {f>>text[i];
         i++;}
     cout<<text;
    cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2013, 11:19     Считывание из файла в char - при выводе выводится лишнее
Посмотрите здесь:

C++ Считывание из файла в char' овский массив
C++ Почему при выводе в поток char* выводится весь массив символов?
Лишнее считывание строк C++
При выводе данных char исчезает первый элемент C++
Считывание текста из файла text в массив char C++
Выводится мусор при выводе массива в обратном порядке C++
Почему при выводе указателя получаем для char - значение по адресу, а для других типов - адрес C++
При выводе числа выводится #INF C++
При сложении переменных типа char выводится код символа C++
При выводе на экран переменной string выводится набор левых символов C++
C++ При выводе char* в конце строки "tr"
Считывание значений из файла (преобразование char в int) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.03.2013, 11:33     Считывание из файла в char - при выводе выводится лишнее #2
Цитата Сообщение от Wladius Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
using namespace std; 
void main ()
{ * 
* * fstream f;
* * f.open ("in.txt", ios::in); 
* * int i=0;
* * char k;
* * char *text=new char;
* * while(!f.eof())
* * * * {f>>text[i];
* * * * *i++;}
* * *cout<<text;
* * cin.get();
}
Налицо неумение работать с указателями и памятью.

Как вариант можно вот так попробовать
C++
1
2
3
4
5
6
7
8
9
10
11
* * fstream f;
* * f.open ("in.txt", ios::in); 
    const int buf_size = 256;
* * int i=0;
* * char k;
* * char *text=new char[buf_size];
* * while(!f.eof() && i < buf_size - 1)
* * * * {f>>text[i];
* * * * *i++;}
     text[i] = '\0';
* * *cout<<text;
Добавлено через 46 секунд
звездочки при цитировании добавились, естессно они не нужны.
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
26.03.2013, 11:42  [ТС]     Считывание из файла в char - при выводе выводится лишнее #3
Kastaneda, спасибо, а если строка будет больше 256, или лишняя память выделяется, то можно ли как-то выделить памяти столько сколько нужно не больше/меньше?
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
26.03.2013, 11:49     Считывание из файла в char - при выводе выводится лишнее #4
Цитата Сообщение от Wladius Посмотреть сообщение
а если строка будет больше 256, или лишняя память выделяется, то можно ли как-то выделить памяти столько сколько нужно не больше/меньше?
на самом деле прочитаются только 255 символов. Если строка будет больше, она не будет прочитана до конца.
Можно выделить ровно столько памяти, сколько нужно. Для этого сначал необходимо узнать размер файла.

Добавлено через 54 секунды
пример
Yandex
Объявления
26.03.2013, 11:49     Считывание из файла в char - при выводе выводится лишнее
Ответ Создать тему
Опции темы

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