[cdev] sscanf
    Grigoriy A. Sitkarev 
    sitkarev на komitex.ru
       
    Пн Дек 27 10:54:09 MSK 2010
    
    
  
Для понимания пойдёт.
В практическом использовании есть нюансы.
1. Если читаем строку, обязательно нужно указывать максимальный размер 
буфера БЕЗ учёта последнего байта где хранится '\0'. Т.е. в случае если 
бы мы хотели записывать в буфер stub то надо было везде в спецификаторе 
преобразования писать %255s.
2. Иногда нам не нужны значения, но в форматной строке мы их должны 
указать sscanf() чтобы добраться до следующих. Тогда нужно добавлять 
звёздочку сразу после знака спецификатора преобразования '%'.
sscanf(str, "%*s %i %*s %*s %*s %*s %*s %i %*s", &ten, &nine);
3. Зачем нам печатать значение res если туда ничего не попало?? Должно 
быть так:
res = sscanf(...);
Тогда есть смысл его печатать.
--
Г.А.
Mikhail Ilyin пишет:
> А если вот так для понимания :). Последний аргумент %s можно не указывать
> и не вычитывать '.' из строки.
> 
> int res, nine = 0, ten = 0;
> char str[] = "I'm 10 years old. And you are 9.";
> char stub[256];
> 
> sscanf(str, "%s %i %s %s %s %s %s %i %s", stub, &ten, stub, stub, stub, stub, stub, &nine, stub);
> printf("%i %i %i\n", ten, nine, res);
> 
    
    
Подробная информация о списке рассылки cdev