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

Подключение файлов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
03.04.2012, 23:14     Подключение файлов #1
Здраствуйте!
Проблема заключается в том, что при чтении файла формата .txt файл читает но вместо текста :
Congratulations you did it
выводит "китайский" язык, при обявлении
C++
1
char ch;
все вроде нормально ( открывает первый символ ), но как только я пытаюсь обьявить ch как массив, то выводится "китайский" язык. Помогите пожалуста.

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
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
int main ()
    {  
        char h[30];
        cout<<"File name : ";
        cin>>h;
        cout<<"Open "<<h<<endl;
     fstream fin;
     fin.open(h);  
     char ch[21];   // кажется ошибка здесь 
     fin.get(ch[21]);
     cout<<ch;
    
 
getch();
fin.close();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 23:14     Подключение файлов
Посмотрите здесь:

C++ Подключение заголовочных файлов
C++ Подключение .h файлов в VS2010
C++ C++ подключение текстовых файлов
Подключение других файлов C++
C++ Подключение файлов в проект
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
04.04.2012, 09:38     Подключение файлов #2
Длина строки "Congratulations you did it" == 27 вместе с нулем в конце.

C++
1
2
     char ch[27];
     fin.get(ch, 27);
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
04.04.2012, 19:53  [ТС]     Подключение файлов #3
Не помогает, пробовал изменять диапазон 23...30 , но безрезультатно. Возможно нужно правильно сохранить файл формата .txt?
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
05.04.2012, 00:07     Подключение файлов #4
Ты не понял, в конец строки ноль не записывается !!!

+ показывай исправленный код. иначе лесом.
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
05.04.2012, 22:42  [ТС]     Подключение файлов #5
C++
1
2
3
    
     char ch[27/*тут меняю 23 до 30*/];
     fin.get(ch, 27/*соответственно и тут*/);
Я решил проблему другим путем, но хочу до конца понять как этим способом открыть файл?
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
05.04.2012, 23:07     Подключение файлов #6
После get():
ch[27 - 1] = '\0';
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
09.04.2012, 19:49  [ТС]     Подключение файлов #7
Не вышло, всеравно китайский язык
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
09.04.2012, 20:38     Подключение файлов #8
Показывай код.
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
09.04.2012, 22:45  [ТС]     Подключение файлов #9
вариант первый :
C++
1
2
3
4
5
6
7
8
9
        char h[27];
        cout<<"File name : ";
        cin>>h;
        cout<<"Open "<<h<<endl;
     fstream fin;
     fin.open(h);
     char ch[27];
     fin.get(ch[27-1]='\0');
     cout<<ch;
вариант второй :
C++
1
2
3
4
5
6
7
8
9
10
        char h[27];
        cout<<"File name : ";
        cin>>h;
        cout<<"Open "<<h<<endl;
     fstream fin;
     fin.open(h);
     char ch[27];
     fin.get(ch[27]);
     ch[27-1]='\0';
     cout<<ch;
...спасибо что не покидаете меня
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
09.04.2012, 23:04     Подключение файлов #10
Давай первый вариант вообще рассматривать не будем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <math.h>
#include <fstream>
#include <iostream>
 
using namespace std;
 
int main()
{
    char h[256];
    cout << "File name : ";
    cin >> h;
    cout << "Open " << h << endl;
 
    fstream fin;
    char    ch[256];
    fin.open( h );
    fin.get( ch, 256 );
    cout << ch;
    fin.close();
 
    return 0;
}
По поводу того что в конец не записывается '\0' похоже я тебе наврал... или не наврал.. я уже не помню.
Не стоит так сильно экономить память, стек хоть и не резиновый но его можно чуть-чуть растянуть. Благо современные технологии позволяют выделить побольше.
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
09.04.2012, 23:51  [ТС]     Подключение файлов #11
Спасибо огромное!
Как я понял строкой
C++
1
fin.get( ch, 256 );
вы хотите сказать чтобы открытый файл записали в ch на 256 символов? А как записать файл в масив ch с 30 по 60 ячейки?

если не против можете помочь тут?
http://www.cyberforum.ru/visual-cpp/thread528765.html
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
10.04.2012, 00:33     Подключение файлов #12
По поводу ссылки:
Это C# или что-то не являющееся Си или С++ или Ассемблером... Увы, но моя религия не позволяет программировать на языках подобного уровня и не признает их.

По поводу:
Цитата Сообщение от 4ININ Посмотреть сообщение
вы хотите сказать чтобы открытый файл записали в ch на 256 символов? А как записать файл в масив ch с 30 по 60 ячейки?
Извините но я не понял сути вопросов.. Вы не через Google-Translate это переводили?

C++
1
fin.get( ch, 256 );
256 - это максимальное количество байт, которое может быть считано из потока и записано в массив (включая терминатор '\0')
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
10.04.2012, 01:03     Подключение файлов #13
Я бы рекомендовал всё же
Цитата Сообщение от 4ININ Посмотреть сообщение
при чтении файла формата .txt
пользоваться другими приёмами, а именно: использовать строки. Если необхродимо построчно считать, значит построчно, если пословно, значит пословно. Поправил первый код:


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
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
int main ()
    {  
        char h[30];
        cout<<"File name : ";
        cin>>h;
        cout<<"Open "<<h<<endl;
     fstream fin;
     fin.open(h);  
     string ch;   // ГЄГ*æåòñÿ îøèáêГ* çäåñü 
     getline (fin, ch);
 
     cout<<ch;
    
 
getch();
fin.close();
return 0;
}
4ININ
2 / 2 / 0
Регистрация: 26.03.2012
Сообщений: 57
10.04.2012, 01:24  [ТС]     Подключение файлов #14
Цитата Сообщение от lazybiz Посмотреть сообщение
По поводу ссылки:
Это C# или что-то не являющееся Си или С++ или Ассемблером... Увы, но моя религия не позволяет программировать на языках подобного уровня и не признает их.

По поводу:
Извините но я не понял сути вопросов.. Вы не через Google-Translate это переводили?

C++
1
fin.get( ch, 256 );
256 - это максимальное количество байт, которое может быть считано из потока и записано в массив (включая терминатор '\0')
Нет, ето я сам=)
Я понимаю что ето массив. Но я же могу пользоваться ячейками етого массива например записав в него сначала из одного файла ( который занимает 20 символов ) первые 30 ячеек а потом в етот же массив записать еще символы из другого файла ( например с 31 по 256? ячейку ).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2012, 01:45     Подключение файлов
Еще ссылки по теме:

C++ Подключение файлов
Подключение заголовочных файлов C++
Подключение заголовочных файлов C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
10.04.2012, 01:45     Подключение файлов #15
Я так понимаю это был вопрос... Да! (это был ответ) Конечно можете, главное подойти к этому вопросу более деликатно

P.S.: я любитель пошутить, прошу не счесть мой ответ шуткой или стёбом.
Yandex
Объявления
10.04.2012, 01:45     Подключение файлов
Ответ Создать тему
Опции темы

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