scanf, что остается во входном потоке после сбоя

Вы можете использовать эту функцию:

send_static_file(filename) Функция, используемая для отправки статических файлов из статической папки в браузер.

app = Flask(__name__)
@app.route('/<path:path>')
def static_file(path):
    return app.send_static_file(path)
2
задан Manny_Mar 16 January 2019 в 22:42
поделиться

1 ответ

scanf() зло - используйте fgets(), а затем анализируйте.


Деталь не в том, что scanf() совершенно плох.

1) Спецификаторы формата часто используются слабым образом

char buf[100];
scanf("%s", buf); // bad - no width limit

2) Возвращаемое значение ошибочно не проверяется

scanf("%99[\n]", buf); // what if use entered `"\n"`?
puts(buf); 

3) Когда ввод не такой, как ожидалось , не ясно, что остается в stdin.

if (scanf("%d %d %d", &i, &j, &k) != 3) {
  // OK, not what is in `stdin`?
}

у вас могут возникнуть проблемы, если вы попытаетесь смешать вызовы scanf с вызовами getchar или getline.

Да. Многие scanf() вызовы оставляют завершающий '\n' в stdin, которые затем читаются как пустая строка getline(), fgets(). scanf() не не для чтения строк . getline() и fgets() гораздо лучше подходят для чтения строки .


Сильно ли изменился scanf с тех пор, как были написаны приведенные выше цитаты?

Только так много изменений может произойти без путаницы в кодовой базе. @Джонатан Леффлер

scanf() остается проблематичным. scanf() не может принять аргумент (после формата), чтобы указать, сколько символов нужно принять в пункт назначения char *.

Некоторые системы добавили дополнительные опции формата, чтобы помочь.

Фундаментальная проблема заключается в следующем:

Пользовательский ввод зло . Более надежно получить ввод текста за один шаг, квалифицировать ввод, затем проанализировать и оценить его успех, чем пытаться сделать все это в одной функции.


Безопасность

Слабость scanf() и плохая тенденция кодера scanf() были золотым прииском для хакеров.

IMO, C не имеет надежного набора функций пользовательского ввода.

0
ответ дан chux 16 January 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: