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

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

Восстановить пароль Регистрация
 
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
06.08.2013, 12:46     НЕ записывается содержимое файла в переменную типа char #1
Нужно открыть файл, сохранить содержимое текста файла в переменную типа 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++
C++ Как сравнить переменную типа char
C++ Не могу обнулить переменную типа char
C++ Очистить переменную типа char *
Сложение массива типа char в одну переменную C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
06.08.2013, 12:51     НЕ записывается содержимое файла в переменную типа char #2
В переменную типа char считается один символ. Если у вас первый символ в файле - ноль, то все правильно выводит.
ninja2
 Аватар для 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
 Аватар для 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
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
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
 Аватар для 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
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
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
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
06.08.2013, 15:02     НЕ записывается содержимое файла в переменную типа char #11
mikhail90, а поискать сложно?
http://www.cplusplus.com/reference/fstream/ifstream/
Fintt
 Аватар для 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
 Аватар для 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
Еще ссылки по теме:

C++ Как вернуть переменную типа char * из функции
C++ Считать файл в переменную типа char, и работать посимвольно
C++ Вывести с помощью printf переменную типа char*

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

Или воспользуйтесь поиском по форуму:
zybrzybr
 Аватар для 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
Ответ Создать тему
Опции темы

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