![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Джем |
|
||||
|
Unregistered |
Обозначаю некоторую структуру
Далее ввод информации
где f - указатель на файл При запуске программа выдает Name of disk Singer А потом только лишь ожидает ввода Сам текстовый файлик, куда посылается структура, тож получается корявеньким. Мало того, что нет названия диска, так еще и Cost не заносится верно - вместо числа, которое ввели, стоит буква. В чем я обшибаюсь? |
||||
|
|||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
Джем, юзай потоки
|
|||
|
||||
| Джем |
|
|||
|
Unregistered |
Perchilla
У меня не С++, а просто С. Не пойдет. |
|||
|
||||
| Джем |
|
||||
|
Unregistered |
Заменил gets на scanf, пошло дело (не понятно).
Теперь регулярно в файле вместо Cost (например 100) стоит буква 'd'. ??? Еще вылезла ошибка. В файл пишу структуры, используя цикл, до тех пор пока пользователь не нажмет кой-какую клавишу. Так вот, первую структуру записывает в файл без проблем, а на вторую ругается Error of writing information in file, т.е. не пишет. |
||||
|
|||||
| bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Еще не понятно, как вы открываете файл. И закрываете ли его? Вот, примерный код, который должен работать:
Да, еще. Вместо gets, лучше использовать fgets. Там защита от переполнения есть. З.Ы.: и про вырвнивание в структурах не забывать! желательно структуры выравнить по 8 байтной границе Это сообщение отредактировал(а) bel_nikita - 23.11.2004, 10:33 |
||||
|
|||||
| Silver |
|
|||
|
Unregistered |
Для структур лучше использвать fread,fwrite
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
В начале программы не помешает #pragma pack(1)
На самом деле для быстрого наождения файлов в С любая переменная меньше 4 байт занимает 4 байта, если создать структуру
то программа займет 4 байта для р и 4 для t, если нужен какой нибудь конкретный формат надо писать вышеуказанную директиву...
Потоки здесь не пойдут, попробуй cin << c прочитать текст с пробелами, пробел здесь принимается в качестве разделителя и все что после него отбрасывается... |
||||
|
|||||
| Джем |
|
||||||||
|
Unregistered |
bel_nikita
интересно...почему-то тогда числовая переменная (сама по себе без структуры) с помощью fprintf записывается в файл нормально?
Открываю файл (до тех пор пока не введено правильно имя) так
[/code] Потом ввод информации, запись в файл, закрытие файла. Если нужно занести еще информацию, все начинается по-новому.
Извиняюсь за тупость |
||||||||
|
|||||||||
| bel_nikita |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Надо, типа этого:
azesmcar
Добавлено @ 13:00 кое-что про выравнивание в структурах |
||||||||||
|
|||||||||||
| Джем |
|
||||
|
Unregistered |
fname - имя файла, который либо открывается для дозаписи (либо создается, если ранее отстутсвовал).
а я не понял этих строчек, зачем мне memcmp? Дык у меня траблы с записыванием второй структуры именно из-за выравнивания? |
||||
|
|||||
| Джем |
|
|||
|
Unregistered |
Почему первая структура записывается в файл, а вторая нет?
|
|||
|
||||
| Джем |
|
|||
|
Unregistered |
А еще волнует эстетический вопрос: как сделать чтоб данные структур дисков в файле отображались колонками ровненько? Да так, чтоб потом читать их можно было fread-ом.
|
|||
|
||||
| bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Вот, пишет до посинения в файл
Ошибка у тебя в том, что дожен закрыть файл, а потом снова его открыть. Либо не закрывать, но тогда и неоткрывать по 10 раз.
|
||||
|
|||||
| Джем |
|
|||
|
Unregistered |
bel_nikita
Спасибо большое тебе за поддержку в трудную минуту А насчет моего вопроса об эстетике не понял. Как сделать? |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |