Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 09:48   #1
30MBU
Пользователь
 
Аватар для 30MBU
 
Регистрация: 15.09.2009
Сообщений: 19
Вопрос Файлы в С

В задаче нужно считать !числа! из файла, но файл может быть любым.
Сейчас программа работает правильно, если в файле только числа и пробелы. Например так: 1_2_4_4 Здесь "_" - вместо пробелов.

Если файл заканчивается пробелом - выводит второй раз последнее число.
Если в файле есть другие символы - зацикливается.

Не могу дотумкать как это исправить (
30MBU вне форума Ответить с цитированием
Старый 08.11.2009, 11:52   #2
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

Если тебе нужно считывать только числа то зачем в файле ставить последний пробел?
Зацикливаться может из многих причин, код можешь показать?
Верю в google...
lamak вне форума Ответить с цитированием
Старый 08.11.2009, 12:08   #3
30MBU
Пользователь
 
Аватар для 30MBU
 
Регистрация: 15.09.2009
Сообщений: 19
По умолчанию

Вот тот кусочек:
Код:
while( !feof(f) ) {
		fscanf( f, "%d", &num );
		arr[i] = num;
		i++;
	}
Задача состоит не в считываении файла, а в другом, но проблема с этим.

Цитата:
Если тебе нужно считывать только числа то зачем в файле ставить последний пробел?
Наш препод говорит, что пользователь может написать в файле всё что угодно, и тестит на файлах не только с числами! Иначе всё было бы очень просто

Последний раз редактировалось 30MBU; 08.11.2009 в 12:11.
30MBU вне форума Ответить с цитированием
Старый 08.11.2009, 12:18   #4
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

Со считыванием нормально все, должно работать. А если с пробелами и чем там угодно что пользователь может ввести то мне приходит идея сначала считать все с текста как строку, а потом работать с функциями isspace(), isdigit() и потом закидывать в массив. Может можно как-то и другим способом )
Верю в google...
lamak вне форума Ответить с цитированием
Старый 08.11.2009, 12:23   #5
30MBU
Пользователь
 
Аватар для 30MBU
 
Регистрация: 15.09.2009
Сообщений: 19
По умолчанию

спс Проблема решена:
Код:
while( !feof(f) ) {
		if( 1 != fscanf( f, "%d", &num ) ) {
			fscanf( f, "%c", &ch );
		}
		arr[i] = num;
		i++;
	}
Кидаю весь мусор в ch
30MBU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы DeDoK Общие вопросы Delphi 3 27.01.2009 19:13
Файлы NeiL Win Api 3 24.07.2008 17:02
Файлы Алексей Д. Помощь студентам 10 07.05.2008 23:07
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53