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

Запись массива символов в файл - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.79
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
12.04.2010, 19:07     Запись массива символов в файл #1
Здравствуйте! А кто знает как записать массив символов, имеющий пробелы, в файл, а потом его считать и вывести на экран? Подробнее:
- нужно взять массив типа char;
- заполнить его больше, чем 2 словами через пробел;
- записать его в файл
- прочитать эти слова из файла в тот же массив (или новый);
- вывести эти слова на экран;

Писать на чистом С++, т.е. используя iostream и fstream. Кто-нибудь знает как это сделать без использования всяких там векторов и stl контейнеров? Я что-то никак не соображу((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2010, 19:07     Запись массива символов в файл
Посмотрите здесь:

C++ Запись массива в файл.
Запись из массива а файл C++
C++ Запись числового массива в файл
C++ Запись массива в файл
запись массива в файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
12.04.2010, 19:32     Запись массива символов в файл #2
Цитата Сообщение от WiDe Посмотреть сообщение
без использования всяких там векторов и stl контейнеров
STL это как раз основное в с++
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
12.04.2010, 21:00  [ТС]     Запись массива символов в файл #3
ну я это понимаю, просто мне бы это надо сделать не используя STL. Просто я этим хотел сказать, что надо использовать cout, cin, ifstream, ofstream и тп.

Добавлено через 1 час 21 минуту
Вот рылся в литературе, нашёл следующее:
C++
1
output.write(a,32);
Записывает массив а, 32 элемента... Но записывает и весь "мусор", к сожалению. Кстати, а как в массив забить слова через пробел?=) cin что-то не могёт(((
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
12.04.2010, 22:40     Запись массива символов в файл #4
Кстати, а как в массив забить слова через пробел?=) cin что-то не могёт(((
используй gets_s()
например:
C++
1
2
3
4
char c[100];
cout << "Input text-> ";
gets_s(c);
cout << c;
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
12.04.2010, 23:12  [ТС]     Запись массива символов в файл #5
FireNovel, спасибо.
У меня тут парадокс какой-то))) Вот код, допустим:
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{       char a[32];//="Proverka probela";
        ofstream output("output.txt");
 
        for(int i=0; i<32; i++) a[i]=' ';
        gets(a);
        output.write(a,32);
        output<<" 23 42 23 53";
        cin.get();
        return 0;
}
Если ввожу с клавиатуры proverka pro, то в файле записывается proverka pro 23 42 23 53. А если ввожу что-нить другое, например error pro, то в файл уже фигня записывается 牥潲⁲牰o†††††††††††㈠″㈴㈠″㌵. Чё за фигня такая??

Добавлено через 10 минут
Притом, если потом эти иероглифы считывать, то программа их понимает)))
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
12.04.2010, 23:39     Запись массива символов в файл #6
Другой вариант записи массива в файл
C++
1
output << a;
Цитата Сообщение от WiDe Посмотреть сообщение
в файл уже фигня записывается 牥潲⁲牰o†††††††††††㈠″㈴㈠″㌵.
По-видимому, Notepad(Блокнот) воспринимает получившийся текстовый файл output.txt, как записанный в Юникоде. Если открыть файл output.txt в Блокноте и выбрать меню "Сохранить как...", то внизу окна сохранения файла будет написано "Кодировка: Юникод"
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
13.04.2010, 00:27     Запись массива символов в файл #7
все работает без проблем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <fstream>
#define TEXT 100
int main()
{       char a[TEXT];//="Proverka probela";
        std::ofstream output("output.txt");
        gets_s(a); // " sdkjfh sjd h "
        output << a;
        output << "-> 23 42 23 53";
        
        return 0;
}
// в файле: " sdkjfh sjd h -> 23 42 23 53"
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
13.04.2010, 01:46  [ТС]     Запись массива символов в файл #8
FireNovel, спасибо, я разобрался. А для записи используются read и write для потоков.

Alex5, это-то да, но так в файл запишется первый набор символов до пробела, то что после пробела - не запишется...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2010, 13:37     Запись массива символов в файл
Еще ссылки по теме:

Запись массива в файл C++
Запись из массива символов в структуру C++
C++ Запись массива в файл

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

Или воспользуйтесь поиском по форуму:
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
13.04.2010, 13:37     Запись массива символов в файл #9
Цитата Сообщение от WiDe Посмотреть сообщение
Alex5, это-то да, но так в файл запишется первый набор символов до пробела, то что после пробела - не запишется...
C++
1
2
3
char str[100];
ofstream output("output.txt");
output << str;
WiDe, Visual Studio 6. ( operator << ) записывает всю строку( т.е. пока не встретится нулевой символ '\0' )
Это cin >> str; прочитает только одно слово ( пока не встретится пробел )

Строку с пробелами можно прочитать с помощью cin::getline()
C++
1
cin.getline( str, k );  //прочитать не более  (k-1) символа
Yandex
Объявления
13.04.2010, 13:37     Запись массива символов в файл
Ответ Создать тему
Опции темы

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