| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Проблема со считыванием разнотипных данных из фай |
| Автор: Hotrod 11.1.2010, 10:24 | ||
| Всем доброго времени суток! Дело вот в чем. В файле содержатся данные в формате: <Автор(char)> "<Название картины(char)>" <цена(double)> <возраст картины(int)> помогите, пожалуйста, забить это в структуру(список)(В Си, не в C++):
Заранее премного благодарен! |
| Автор: bsa 11.1.2010, 12:00 |
| читаешь файл построчно, затем находишь в считанной строке первое включение символа двойных кавычек, все что до него - автор, затем находишь второе включение кавычек - все что между первыми и вторыми это название, оставшуюся часть строки парсишь с помощью sscanf(str+pos+1, "%lf %lf", &picture->r, &picture->age), где str - строка считанная из файла, pos - позиция последней кавычки, picture - указатель на переменную типа struct K. Кстати, struct K - довольно странное название. Может стоит переименовать в PicInfo или во что-то, что сможет в дальнейшем понять, что же этот тип значит? |
| Автор: and277 11.1.2010, 14:58 |
| bsa , а в с++ попроще разбор мне кажется.... |
| Автор: bsa 11.1.2010, 15:09 |
| and277 |
| Автор: and277 11.1.2010, 15:15 |
| bsa , уже прочел шапку... А поправьте меня если я ошибаюсь: в файл нет смысла записывать объекты, в которых есть указатели? |
| Автор: bsa 11.1.2010, 15:31 |
| Нет смысла записывать указатели. Строка в стиле Си (которая char*) тоже хранится скорее всего в виде указателя. Но почему-то ни у кого не возникает вопросов про необходимость ее сохранения. Так же и про остальные указатели - записывать нужно не значение указателя, а объект на который он ссылается, или еще как-нибудь его обозначать (индекс и т.п.). |
| Автор: and277 11.1.2010, 15:45 | ||
Спасибо... Доходчиво объяснил |
| Автор: Hotrod 12.1.2010, 00:13 | ||
|
| Автор: Hotrod 12.1.2010, 02:42 | ||
Все, теперь помогите мне это в список загнать |
| Автор: bsa 12.1.2010, 11:17 | ||
Hotrod, а тебе нельзя пользоваться такими стандартными функциями, как strlen, strcpy, strcspn и sscanf?
|
| Автор: xvr 12.1.2010, 12:48 | ||
Через strtok будет еще проще:
|
| Автор: bsa 12.1.2010, 13:00 | ||
xvr, у тебя ошибка:
|
| Автор: xvr 12.1.2010, 20:15 | ||||
Я в курсе. В твоем посте (2 штуки назад) довольно подробно расписанно как использовать strncpy. Я написал только самую суть, что бы не загромождать текст. Надеюсь, что ТС сможет дописать остальное |