![]() |
|
Модераторы: bsa |
![]()
|
|
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
||||
|
||||
| Slyfox |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Я наверное не так объяснил.
cin.getline (z[i].fio,MAX); ------------- ничего в файл не пишет(программа скомпилировалась). Я правильно ее использую? Подскажите что не так. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
getline читает строку из файла!
cin.getline() - читает строку с клавиатуры (стандартного ввода) |
|||
|
||||
| Slyfox |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
А как мне считать в массив z[i].fio строку введенную с клавиатуры вместе с пробелами?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
cin.getline(z[i].fio, 21); |
|||
|
||||
| Slyfox |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Вот в этом месте у меня в файл не пишет - не пишет z[i].fio что-то не то но программа скомпилировалась Это сообщение отредактировал(а) Slyfox - 11.12.2007, 18:54 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Ты меня что спросил? Как считать строку! А не как записать! Разницу чувствуешь? Я тебе ответил на вопрос, как прочитать строку с пробелами.
Записать можно с помощью operator<<: cout << z[i].fio |
|||
|
||||
| Slyfox |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Мне тяжело объяснить, но думаю, что я остался не понятым. ----1)-- cin.getline(z[i].fio,21); ----2)-- cout << z[i].fio; 1) Тут пытаюсь записать в массив строку с пробелами 2) И сразу вывести то, что в нем находится, чтобы быть точно уверенным что все правильно записывает Как только я ввожу "Введите количество работников, которые будут введены в таблицу" - число 1 "Введите данные о работнике №" - ввожу первый символ, только я ввожу этот символ как программа не понятно почему закрывается. При этом создается файл пустой который занимает 2байта. Как только я ввожу "Введите количество работников, которые будут введены в таблицу" - число 2 "Введите данные о работнике №" - ввожу первый символ - второй при этом не приходится вводить он сам становится идентичным 1-ому. При этом создается файл состоящий из двух строк: первая строка пустая, во второй записан первый введенный символ. Также ограничения одним символом. Где у меня ошибка? Помогите. Пожалуйста. Чем дальше тем непредсказуемее... |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Для начала посмотри мой код. Я малость тебя подправил. В данном случае программа записывает значения в файл. Но учти - вводимый тобой русский текст отображаться не будет. Надо обрабатывать строки в функции OemToChar.
Ошибок у тебя много. Особенно со структурой. Будут вопросы спрашивай.
ЗЫ. Для модераторов - так хоть Борландом пользоваться можно? |
|||
|
||||
| Slyfox |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Код пока предложенный не проверял.
Но первое что бросилось в глаза char *fio; ........ char dolznost[250]; почему они такие разные, это к чему, т.е. зачем? |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Считай это моей прихотью. Это я чисто для себя сделал. По большому счету конечно можешь оставить так как у тебя - вполне хватит 21 элемента. Указатель на char значит - что массив у тебя безразмерный (естественно ограничивается типом).В кратце - если вдруг фамилия больше 21 знаков он и создат строку более 21 знака.
В твоем случае ты не правильно записываешь данные в структуру. Это надо делать через функцию strcpy(куда_копируешь, что_копируешь) либо использовать как я указатель. |
|||
|
||||
| likehood |
|
|||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: нет Всего: 24 |
если бы это была строка класса std::string то так бы и было. А для сишных строк надо выделять память самому, cin это за тебя не сделает. Так что вместо char *fio нужно писать char fio[250] (или другой размер, не важно). |
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
тогда что бы убедится в вашей правоте скажите почему char *fio работает? и причем без проблем? Бьерн Страуструп пишет
Парируйте если можете тов. likehood Это сообщение отредактировал(а) mrbrooks - 11.12.2007, 23:21 |
||||
|
|||||
| likehood |
|
||||
|
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: нет Всего: 24 |
у Страуструпа речь идет о инициализации строки, когда компилятор может вычислить нужный размер работает до поры до времени. Попробуй выполнить такой код в дебаг-версии:
У меня в студии выдается ошибка, что я исползьую переменную str без инициализации. Добавлено через 3 минуты и 46 секунд а вот такой код не работает и в релизе:
|
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Я под Билдером зделал так:
все нормально |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |