2010-10-20 5 views
5

Je veux lire dans une chaîne et l'analyser avec sscanf. Bien que je ne veux pas lire dans les espaces au début.sscanf sauter au-dessus de l'espace blanc au début

Exemple de chaîne.

@a Bear Tiger 

sscanf(strLine, "@%1s %64s %64s", dir, name1, name2); 

J'ai cela.

problème est de savoir si la ligne va en dire que

 @a Bear Tiger 

devrait être:

@a Bear Tiger 

qu'il voudra lire dans les espaces jusqu'à le caractère @. Comment puis-je sauter l'espace blanc et lire le caractère @.

Merci.

+0

+1 pour utiliser les spécificateurs de largeur de champ corrects dans votre chaîne de format 'scanf'. –

Répondre

12
sscanf(strLine, " @%1s %64s %64s", dir, name1, name2); 

Cela est nécessaire parce que scanf permet de sauter que des espaces pour (la plupart) des spécifications de conversion. Mais @ est un "caractère ordinaire", pas une spécification de conversion, donc il n'y a pas de saut. Toutefois, l'ajout d'espaces à la chaîne de format oblige à ignorer les espaces d'entrée.

+0

+1, cela devrait fonctionner. Je me demandais pourquoi vous avez supprimé la réponse. – codaddict

+0

@coda, j'étais en train de deviner ma réponse pour la raison indiquée dans les deux réponses supprimées. 'scanf' * ne * ignore pas les espaces dans les spécifications. Cependant, j'ai compris la distinction. –

+0

Bizarre, je pensais que j'avais essayé cela. Merci! – Matt