Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод двумерного массива из файла 
:(
    Опции темы
Slash_from_Ryazan
Дата 25.4.2005, 22:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрый вечер!
Подскажите пожалуйста как реализовать в C ввод двумерного массива из текстового файла, чтобы все пробелы межу значениями float игнорировались и при этом автоматически происходил подсчет размерности массива. В паскале это очень легко реализовывалось через read, readln....
  Вверх
Ggamhat
Дата 26.4.2005, 04:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 24.4.2005

Репутация: нет
Всего: нет



В с++ это тоже просто сделать. Функция getc() считывает строку данных из файла. Потом ты эту строку разбираешь по элементам до конца, таким образом можешь подсчитать кол-во элементов в каждой строке и вообще кол-во строк. Затем создаёшь указатель на область памяти и отводишь память размером <кол-во строк>x<кол-во столбцов>. И работаешь с ними

Это сообщение отредактировал(а) Ggamhat - 26.4.2005, 04:31
PM MAIL   Вверх
Slash_from_Ryazan
Дата 26.4.2005, 19:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо. Идею понял - попробую реализовать. В принципе предложенный меня метод полностью устраивает.
Но возник следующий вопрос: а нет ли в C функции, которая читает из текстового файла значение до пробела, а при достижении конца строки возвращает какое-либо фиксируемое значение?
  Вверх
Ggamhat
Дата 27.4.2005, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 24.4.2005

Репутация: нет
Всего: нет



Функция fscanf() читает до первого раб. символа(пробел, новая строка, таб и др.)
PM MAIL   Вверх
jorkug
Дата 27.4.2005, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 21.3.2005

Репутация: нет
Всего: 1



fscanf может читать строку в любом формате, например:
Код

...
float array[2][100];
for(int i = 0;i<100;i++)
   fscanf(f, "%f,%f\n", array[0][i], array[1][i])
...


PM MAIL   Вверх
Ggamhat
Дата 28.4.2005, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 24.4.2005

Репутация: нет
Всего: нет



Никто и не спорит. Я имею ввиду вариант, когда надо считывать по одному значению(неизвестно кол-во элементов в строке).
PM MAIL   Вверх
Guest
Дата 28.4.2005, 22:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1. Как выяснилось из мануала getc() читает из файла один!!! символ, целую строку читает fgets()
2. Может быть все-таки кто-нить подскажет как с помощью fscanf() поймать момент достижения конца строки. Прочитал по этому поводу весь help из Buildera, но так и не врубился как это сделать.
3. А не правильнее ли было написать?
Код

fscanf(f, "%f", &M[i]) //у меня без & не заработало!

  Вверх
jorkug
Дата 29.4.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 21.3.2005

Репутация: нет
Всего: 1



Цитата(Guest @ 28.4.2005, 22:06)
2. Может быть все-таки кто-нить подскажет как с помощью fscanf() поймать момент достижения конца строки.

Код

fscanf(f, "%s\n", str);// все символы до переноса строки
fscanf(f, "%s\0", str););// все символы до нулевого


Цитата(Guest @ 28.4.2005, 22:06)
3. А не правильнее ли было написать?

правильнее, я забыл их поставить. fscanf принимает указатели на переменные.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.