Utiliser scanf avec des Expressions Régulières

J'ai essayé d'utiliser des expressions régulières sur le scanf pour lire une chaîne de n caractères et jetez rien d'autre jusqu'à ce que le Caractère de Nouvelle Ligne. Les espaces doivent être traités comme des caractères normaux, ainsi inclus dans la chaîne de caractères à lire.
J'ai étudié un article de Wikipédia sur les Expressions Régulières, mais je ne peux pas obtenir scanf pour fonctionner correctement. Voici un code que j'ai essayé:

scanf("[ ]*%ns[ ]*[\n]", string);

[ ] est censé aller pour le véritable caractère d'espace, * est censé signifier un ou plus, n est le nombre de caractères à lire et à chaîne est un pointeur alloué avec malloc.
J'ai essayé plusieurs combinaisons différentes; cependant, j'ai tendance à obtenir que le premier mot d'une phrase comme suit: (s'arrête à caractère espace). En outre, * semble jeter un caractère au lieu de la signification "zéro ou plus"...

Quelqu'un pourrait-il expliquer en détail comment les expressions régulières sont interprétés par le scanf? Ce qui est plus, il est efficace d'utiliser la fonction getc de façon répétitive à la place?

Merci d'Avance 😀

  • Essayez fgets(): fgets(string, sizeof string, stdin);
  • Le problème est que tous les caractères restants seront laissés dans le flux d'entrée, n'est-ce pas?
  • Si il y a assez d'espace fgets() consomme tout jusqu'à (et y compris) un '\n'.
  • Ne pas utiliser scanf.
InformationsquelleAutor someone | 2013-02-14