Как заставить sscanf проверять первый символ на наличие 8? Сейчас в буфер попадает Hello.
Код: Выделить всё
char text[] = "Hello 8AhRE9So6PlqHab World";
char result[260];
sscanf(text, " %15[A-La-LO-Zo-z5-9]", result);
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Код: Выделить всё
char text[] = "Hello 8AhRE9So6PlqHab World";
char result[260];
sscanf(text, " %15[A-La-LO-Zo-z5-9]", result);
Romeo писал(а):Функция scanf никогда не использовалась для валидации. По факту, она её не делает, игнорируя всё, что ей не удалось прочитать. Если нужна валидация, делай её вручную.
Код: Выделить всё
sscanf(text, " %15[A-La-LO-Zo-z5-9]", result);
- Хочу, чтобы кипящая вода была в твёрдом состоянии. Как это сделать?Sunduk писал(а):Тем не менее. Вопрос актуальный.
Ну, чисто теоретически, это не совсем каша для стандарта C99, согласно документации.Слива писал(а):А что это за каша такая в sscanf?
Тем не менее, от неверных данных это всё равно не спасет.Din666 писал(а):man sscanf
Знак *, помещенный после % и перед спецификатором формата, считывает данные указанного типа, но подавляет их присваивание.
sscanf(text, "%*s %1[8]%14[A-La-LO-Zo-z5-9]", &result[0], &result[1])
Я же давал ссылку на мануал по scanf. Там подробно описан этот формат.Слива писал(а):А что означает "%1[8]%14[A-La-LO-Zo-z5-9]" - можете это подробно объяснить? Объясните, пожалуйста, если сможете.