![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Slash_from_Ryazan |
|
|||
Unregistered |
Добрый вечер!
Подскажите пожалуйста как реализовать в C ввод двумерного массива из текстового файла, чтобы все пробелы межу значениями float игнорировались и при этом автоматически происходил подсчет размерности массива. В паскале это очень легко реализовывалось через read, readln.... |
|||
|
||||
Ggamhat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 24.4.2005 Репутация: нет Всего: нет |
В с++ это тоже просто сделать. Функция getc() считывает строку данных из файла. Потом ты эту строку разбираешь по элементам до конца, таким образом можешь подсчитать кол-во элементов в каждой строке и вообще кол-во строк. Затем создаёшь указатель на область памяти и отводишь память размером <кол-во строк>x<кол-во столбцов>. И работаешь с ними
Это сообщение отредактировал(а) Ggamhat - 26.4.2005, 04:31 |
|||
|
||||
Slash_from_Ryazan |
|
|||
Unregistered |
Спасибо. Идею понял - попробую реализовать. В принципе предложенный меня метод полностью устраивает.
Но возник следующий вопрос: а нет ли в C функции, которая читает из текстового файла значение до пробела, а при достижении конца строки возвращает какое-либо фиксируемое значение? |
|||
|
||||
Ggamhat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 24.4.2005 Репутация: нет Всего: нет |
Функция fscanf() читает до первого раб. символа(пробел, новая строка, таб и др.)
|
|||
|
||||
jorkug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 21.3.2005 Репутация: нет Всего: 1 |
fscanf может читать строку в любом формате, например:
|
|||
|
||||
Ggamhat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 24.4.2005 Репутация: нет Всего: нет |
Никто и не спорит. Я имею ввиду вариант, когда надо считывать по одному значению(неизвестно кол-во элементов в строке).
|
|||
|
||||
Guest |
|
|||
Unregistered |
1. Как выяснилось из мануала getc() читает из файла один!!! символ, целую строку читает fgets()
2. Может быть все-таки кто-нить подскажет как с помощью fscanf() поймать момент достижения конца строки. Прочитал по этому поводу весь help из Buildera, но так и не врубился как это сделать. 3. А не правильнее ли было написать?
|
|||
|
||||
jorkug |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 21.3.2005 Репутация: нет Всего: 1 |
правильнее, я забыл их поставить. fscanf принимает указатели на переменные. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |