2010-03-11 3 views
2

gcc 4.4.2sscanf utilisant pour extraire certaines valeurs

Je le code suivant:

char channels[] = "NumberOfChannel = [2]"; 

sscanf(channels, "%*[^=]= %d", &chan); 

Je me demande ce que cela signifie. Autant que je sache. Il ignore le signe égal.

'^ ignore the character =' 

Est-ce que ce serait correct?

Un grand merci,

+0

En fait, dans sscanf [] est maily utilisé pour lire un des caractères blancs. nous pouvons l'utiliser comme une classe de caractères dans l'expression régulière – sganesh

+0

Dans cette instruction sscanf ne lit aucune valeur. – Pavunkumar

Répondre

3
%*[^=] 

Les [^=] moyens correspondent à une chaîne qui ne contient pas =. Ceci est un POSIX extension. Le * signifie ignorer le résultat correspondant.

(BTW, pour obtenir correctement chan vous avez besoin sscanf(channels, "%*[^=]= [%d]", &chan);.)

+1

'[^' est décrit dans la norme C disponible sur http://www.open-std.org/jtc1/sc22/wg14/www/standards.html et n'est pas une extension POSIX. –

Questions connexes