PHP fscanf против fgets

Я могу прочитать всю строку в строке, используя fgets() но fscanf() не делает этого.

Согласно инструкции PHP

fscanf — анализирует ввод из файла в соответствии с форматом

Функция fscanf() похож на sscanf(), но он берет свой ввод из файла, связанного с дескриптором, и интерпретирует ввод в соответствии с указанным форматом, который описан в документации для sprintf(),

fgets — получает строку из указателя файла

Получает строку из указателя файла.

поскольку fscanf() поддерживает форматы, как указано выше, я могу использовать %s читать всю строку, но вместо этого он читает только одно слово.

3

Решение

PHP документация fscanf() а также sscanf() не завершено. Форматы аналогичны тем, которые используются printf(), но они не совсем одинаковы. Когда вы печатаете, %s напечатает любую строку, но когда вы сканируете, она просто читает слово. Чтобы получить более полную информацию, вам необходимо прочитать документацию C fscanf() функция. Часть этой информации также находится в разделе комментариев на веб-странице документации.

Чтобы прочитать всю строку с fscanf()использовать "%[^\\n]", В fscanf(), $[^characters] означает соответствие любой последовательности символов, которая не входит в набор между скобками (это похоже на [^characters]* в регулярном выражении). Так что это соответствует любой последовательности символов, кроме новой строки. Увидеть http://php.net/manual/en/function.sscanf.php#56076

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]