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

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

Войти
Регистрация
Восстановить пароль
 
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
#1

НЕ записывается содержимое файла в переменную типа char - C++

06.08.2013, 12:46. Просмотров 807. Ответов 13
Метки нет (Все метки)

Нужно открыть файл, сохранить содержимое текста файла в переменную типа char под названием buffer и вывести переменную buffer на экран. При выводе этой переменной у меня отображается ноль, помогите исправить

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
#include<iostream>
#include<string.h>
#include<fstream>
using namespace std ;
 
int main ()
{
    setlocale(0,"") ;
    cout << "Положите файл для считывания на диск С," << endl
        << "назовите его 11.txt, " << endl 
        << "после того, как положили нажмите ENTER" << endl ;
    cin.get() ;
    ifstream ReadFile ("C:\\11.txt") ;
 
    if (ReadFile == NULL)
        cout << "Файл отсутствует" << endl ;
    else
    {
        char buffer ;
        cout << "Содержимое вашего файла: " << endl << endl ;
        ReadFile >> buffer ;
        cout << buffer ;
    }
 
    return 0 ;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2013, 12:46     НЕ записывается содержимое файла в переменную типа char
Посмотрите здесь:

Как сделать переменную типа char именем файла - C++
Есть переменная(массив) типа char с произвольным количеством символов внитри Как сделать так чтобы когда я создаю файл к примеру таким...

В переменную типа string записывается только первое слово строки - C++
Как вписывать предложения в тип string (если возможно)? То есть скажем после string randomstr; cin &gt;&gt; randomstr; // вводим например...

Очистить переменную типа char * - C++
Привет. Тупит код: char *rt; int port=4; rt=&quot;COM&quot;; char temp1; //временная перем. ...

Ввод символов в переменную типа char - C++
Почему после ввода больше 1-го символа выбивает default? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using...

Передать переменную типа char по ссылке - C++
доброго времени суток. помогите над очень простым задание из одной книги. Создайте функцию, которая получает аргумент char&amp; и...

Не могу обнулить переменную типа char - C++
Доброго времени суток, помогите обнулить переменную, т.к. мой компилятор ругается &quot;E2277 Lvalue required&quot; char inBuffer; ...

Как сравнить переменную типа char - C++
нужно найти элементы типа char различные от нуля, программу я написал, а вот не получается сравнивать #include &lt;iostream&gt; #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
06.08.2013, 12:51     НЕ записывается содержимое файла в переменную типа char #2
В переменную типа char считается один символ. Если у вас первый символ в файле - ноль, то все правильно выводит.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 13:09     НЕ записывается содержимое файла в переменную типа char #3
Цитата Сообщение от mikhail90 Посмотреть сообщение
char buffer ;
Измени на char buffer[1000]; и попробуй мб заработает.
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
06.08.2013, 13:11  [ТС]     НЕ записывается содержимое файла в переменную типа char #4
Цитата Сообщение от ninja2 Посмотреть сообщение
Измени на char buffer[1000]; и попробуй мб заработает.
Заменил, отображает только первое слово.

Вот содержимое всего файла:

Один - два ? три
ЧеТыРе Пять. Шесть, Семь
Семь : Шесть ; Пять Один !
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 13:17     НЕ записывается содержимое файла в переменную типа char #5
Цитата Сообщение от mikhail90 Посмотреть сообщение
Заменил, отображает только первое слово.
Попробуй
Цитата Сообщение от mikhail90 Посмотреть сообщение
ReadFile >> buffer ;
заменить на
C++
1
2
3
4
5
6
int i=0;
char c;
while(ReadFile.get(c))
{
buffer[i++]=c;
}
мб заработает.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
06.08.2013, 13:18     НЕ записывается содержимое файла в переменную типа char #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream file("text.txt") ;
    if (!file.good()) return 1;
    file.seekg(0, std::ifstream::end);
    size_t size = file.tellg();
    file.seekg(0, std::ifstream::beg);
    char *text = new char[size];
    file.read(text, size);
    std::cout << text;
    delete [] text;
    return 0 ;
}
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 13:22     НЕ записывается содержимое файла в переменную типа char #7
Цитата Сообщение от ninja2 Посмотреть сообщение
int i;
отут int i=0; нужно я чуток ошибся.
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
06.08.2013, 14:36  [ТС]     НЕ записывается содержимое файла в переменную типа char #8
Цитата Сообщение от ninja2 Посмотреть сообщение
int i=0;
char c;
while(ReadFile.get(c))
{
buffer[i++]=c;
}
Тут нужно будет тогда конкретно объявлять , например так, buffer[10000]. И при печати, после прочтения файла, он будет дальше всякую ерунду печатать , пока массив не заполнится. Попробовал так обойти, не получается

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
#include<iostream>
#include<string.h>
#include<fstream>
 
using namespace std ;
 
int main ()
{
    setlocale(0,"") ;
    cout << "Положите файл для считывания на диск С," << endl
        << "назовите его 11.txt, " << endl 
        << "после того, как положили нажмите ENTER" << endl ;
    cin.get() ;
    ifstream ReadFile ("C:\\11.txt") ;
 
    if (ReadFile == NULL)
        cout << "Файл отсутствует" << endl ;
    else
    {
        char buffer[10000] ;
        int i = 0;
        char c;
        while(ReadFile.get(c))
        {
            if (c == '\0')
                break ;
           buffer[i++] = c;
        }
        cout << "Содержимое файла:" << endl << endl ;
        cout << buffer << endl << endl;
    }
 
    return 0 ;
}
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
06.08.2013, 14:54     НЕ записывается содержимое файла в переменную типа char #9
Цитата Сообщение от mikhail90 Посмотреть сообщение
if (c == '\0')
и какое это отношение имеет к файлам?

Добавлено через 57 секунд
еще раз взгляните на рабочий вариант
НЕ записывается содержимое файла в переменную типа char
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
06.08.2013, 15:01  [ТС]     НЕ записывается содержимое файла в переменную типа char #10
Объясните тогда , что за функции good(), seekg(), tellg(), я с ними просто не встречался
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
06.08.2013, 15:02     НЕ записывается содержимое файла в переменную типа char #11
mikhail90, а поискать сложно?
http://www.cplusplus.com/reference/fstream/ifstream/
Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
06.08.2013, 15:10     НЕ записывается содержимое файла в переменную типа char #12
Вот держи
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
// 6.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include<iostream>
#include<string.h>
#include<fstream>
#include <conio.h>
 
using namespace std ;
 
int main ()
{
    setlocale(0,"") ;
    cout << "Положите файл для считывания на диск С," << endl
        << "назовите его 11.txt, " << endl 
        << "после того, как положили нажмите ENTER" << endl ;
    char buffer[1000] ;
    cin.get();
    ifstream ReadFile ("C:\\11.txt") ;
    if (!ReadFile)
        cout << "Файл отсутствует" << endl ;
    else
    {
        cout << "Содержимое вашего файла: " << endl << endl ;
        while (ReadFile)
        {
        ReadFile.getline(buffer, 1000); //выводит в исходном в виде игнорируя пробелы, таб и конец строки
        cout << buffer<<endl ;
        }
    }
    ReadFile.close(); //Нужно закрыть поток
    getch();
    return 0 ;
}
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.08.2013, 15:33     НЕ записывается содержимое файла в переменную типа char #13
Цитата Сообщение от mikhail90 Посмотреть сообщение
Попробовал так обойти, не получается
После этого цикла
C++
1
2
3
4
5
6
while(ReadFile.get(c))
        {
            if (c == '\0')
                break ;
           buffer[i++] = c;
        }
добавсь строчку
buffer[i]='\0'; и мб заработает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 15:56     НЕ записывается содержимое файла в переменную типа char
Еще ссылки по теме:

Занести число в переменную, типа char - C++
char a; cin&gt;&gt;a; a=3; Тут при чтении с клавы мы считываем символ , т.е. если я введу 3, то а будет равно 3, а при присваивании а =...

Сложение массива типа char в одну переменную - C++
Здравствуйте, уважаемые форумчани, помогите разобраться с такой простой задачей. Есть массив char Arr={'1','a','3','b','5','c'}....

Переменную типа char представить в виде 8 битов - C++
У меня есть символ a. char x = 'a'; = 1 байту. Тоесть 8 битам. Как мне получить символ a в битовом представлению? Тоесть a=....

Как вернуть переменную типа char * из функции - C++
Как вернуть переменную типа char * из функции в которую передаю string??? Вот моя функция: char * function ( string line ) { ...

Вывести с помощью printf переменную типа char* - C++
Добрый день! Подскажите: есть переменная &quot;message&quot; типа char* Если пишу: printf(&quot;\n%*d %c &quot;, offset--, (char*)message, i ? '+' :...


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

Или воспользуйтесь поиском по форуму:
zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
06.08.2013, 15:56     НЕ записывается содержимое файла в переменную типа char #14
Цитата Сообщение от mikhail90 Посмотреть сообщение
seekg(), tellg(),
seekg(i) - метод класса istream который должен установить указатель get в позицию i для ввода а поток.
а вот tellg() - ВОЗВРАЩАЕТ как раз тот самый указатель get
указатель get - это номер в файле очередного вводимого байта
Yandex
Объявления
06.08.2013, 15:56     НЕ записывается содержимое файла в переменную типа char
Ответ Создать тему
Опции темы

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