Войти

Показать полную графическую версию : Основы C++ | Файловый ввод


Skrip
04-08-2005, 17:55
Почему это не работает. Уже волосы начинаю рвать :(
#include <fstream.h>
#include <iostream.h>

ofstream outFile( "m_out_file.txt" );
char* word;

int main()
{
cin >> word;
outFile << word ;
}

Savant
04-08-2005, 18:08
Это просто. Замени char* word; на#define MAX 100
char word[MAX];


Добавлено:
Или можно извратиться и написать:
void main()
{
char *word = (char*)malloc(100);
cin >> word;
outFile << word;
free(word);
}

Skrip
05-08-2005, 06:44
А я что-то не догадался ... :(
А почему твой работает, а мой нет?

SergeCpp
05-08-2005, 07:17
Ну и дела...

ПОЧЕМУ НЕ ЧИТАЕТЕ КНИГИ ?!

А ?!

SergeCpp
05-08-2005, 07:22
Кстати, Savant, а что, если USER введёт 123 символа ?

Тут надо использовать std::string // имя, возможно, неточное, но STD:: - точно

lehha
05-08-2005, 07:57
вместо malloc лутше используй new, а вместо free delete

SergeCpp
05-08-2005, 08:12
Если уж "cin >>", то лучше, всё-таки, STD::
И вводи туда хоть мегабайт, "там" обо всём позаботятся...

И ЧИТАЙТЕ КНИГИ !

Skrip
05-08-2005, 10:40
SergeCpp, а какие книги посоветуете? да еще и такие которые можно скачать, а то в моей деревне кроме худ. лит-ры больше ничего нет.

SergeCpp
05-08-2005, 13:15
http://free.ovl.ru/pages/ebook/prog_c.php
http://anatolix.naumen.ru/Books/CPlusPlus?v=9sj

Большая просьба не флеймить в тематическом разделе и не отправлять подряд более двух постов без необходимости. Пользуйтесь ссылкой "Редактировать сообщение".

Savant
05-08-2005, 13:20
SergeCppКстати, Savant, а что, если USER введёт 123 символа ?
AV или же что-то подпортится )) Между прочим, емнип, размер буфера ввода ограничен и равен в ДОСе 127 байтам, а в консольных программах под Windows 510 байтам.

Skripа какие книги посоветуете?
Начни, например, с этого:
"Введение в язык С++" (http://www.unix.org.ua/cpp/aglav.htm) (Бьярн Страустрап, 1995 г.)
м.б. пригодится и "Язык С" (http://lib.ru/CTOTOR/kernigan.txt) (Б.В. Керниган, Д.М. Ричи)

SergeCpp
05-08-2005, 13:27
Я НЕ УВЕРЕН, что

"размер буфера ввода ограничен и равен в ДОСе 127 байтам,
а в консольных программах под Windows 510 байтам"

ну совсем не уверен...

ГДЕ ЭТО НАПИСАНО ?

SergeCpp
05-08-2005, 13:30
НЕТ !

>>> Начни, например, с этого:
>>> "Введение в язык С++" (Бьярн Страустрап, 1995 г.)

это же ПЕРВОЕ издание !!!

ivank
05-08-2005, 18:52
Savant
Да, действительно, какое бы ограничение на буфер ввода в ОС не стояло, к библиотеке языка программирования это отношения не имеет. Она там тоже что-то буферизирует, но это абсолютно неважно, поскольку "извне" это не видно. Короче, действительно лучше пользоваться std::string. Или, если так уж надо ввести в массив char, то можно вызывать getline, у него задаётся ограничение по длине.

SergeCpp
НЕТ !

>>> Начни, например, с этого:
>>> "Введение в язык С++" (Бьярн Страустрап, 1995 г.)

это же ПЕРВОЕ издание !!!Поддерживаю. Если уж читать, то 3-е или "специальное" издание. В них по крайней мере современный C++ и даётся понятие об STL и механизмах потоков ввода вывода (это кстати, не чать STL; но чать стандартное библиотеки).

Я бы рекомендовал начинать с Кернигана и Ричи, потому что после них таких глупых ошибок как сделал Skrip не будет наверняка.

Serge, научись нажимать кнопку "редактировать сообщение"


Skrip
А я что-то не догадался ...
А почему твой работает, а мой нет?
Ты не выделил память. Ты объявил указатель на (массив) char, но ни чем его не инициализировал. Т.е. он указывает "в никуда", на какой-то мусор. А должен указывать на массив, в который будет производится чтение.




© OSzone.net 2001-2012