Вопрос по функции fscanf -- как работает распознование формата
Primary tabs
Читаю Хольцнера. Сейчас на 240 стр. Тут возник вопрос, но не уверен, сумею ли я грамотно и понятно его задать )
Читаю о том, как при помощи функции fscanf можно передать аргументам функции list строку в виде элементов массива. Вопрос, собственно, в чем: по какому принципу fscanf разбивает эту самую строку на отдельные элементы массива? Об этом там как-то нечетко написано. Я понял что задается формат данных в виде "%s\t%s\n". Правильно ли я понял, что разделителем (началом очередного элемента массива) является символ "%"?
- Log in to post comments
- 5076 reads
vedro-compota
Thu, 02/22/2018 - 22:23
Permalink
просьба привести примеры кода
просьба привести примеры кода из Хольцнера, подсветить код.
_____________
матфак вгу и остальная классика =)
Voronve
Fri, 02/23/2018 - 00:16
Permalink
Например, пусть в файле tabs
Так вот, правильно ли я понял, что разделителем (началом очередного элемента массива) является символ "%"?
vedro-compota
Fri, 02/23/2018 - 10:41
Permalink
уточнение
Это действительно начало очередного элемента массива какого-то "типа", который нужно извлекать, но тем не менее я уточню:
Дело в том, что fscanf() использует формат sprintf(), но для обратной задачи -- т.е. не печатает строку, а наоборот распознаёт её в соответствии с указанным шаблоном.
В этом шаблоне (его формате) используется соглашение, что, например:
-- аналогично для всех других символов, которые могут быть использованы после процента.
Теперь посмотрим на ваш шаблон и вызов:
fscanf($handle, "%s\t%s\n")
-- функция итак читает из файла очередную строку, но извлечет масссив данных она так (мы как бы сказали ей):
_____________
матфак вгу и остальная классика =)
Voronve
Fri, 02/23/2018 - 13:22
Permalink
Большое спасибо, все
Большое спасибо, все предельно понятно! )