La modification de la scanf() délimiteur

Mon objectif est de changer le séparateur de scanf"\n".
J'ai essayé d'utiliser scanf("%[^\n]s",sen); et fonctionne très bien pour une seule des entrées.
Mais quand j'ai mis la même ligne à l'intérieur d'un for boucle pour plusieurs phrases, il me donne des ordures valeurs.

Personne ne sait pourquoi?


Voici mon code:

char sen[20];
for (i=0;i<2;i++)
{
    scanf("%[^\n]s",sen);
    printf("%s\n",sen);
}
fonctionne dans le sens qu'il lit une ligne dans le terminal avec \n comme délimiteur et j'ai oublié de mettre le signe%, édité cependant.
Je pense que vous avez juste besoin d'enlever la finale 's' de la chaîne de format. Le %[^\n] spécifie à lire les caractères jusqu'à la prochaine '\n', puis le 's' veut un littéral 's' dans l'entrée.
essayé juste avec %[^\n] il donne toujours des ordures valeurs
Vous devez supprimer le saut de ligne à partir de la mémoire tampon d'entrée.
Viens de remarquer que le compilateur ne pas exécuter l' scanf déclaration à l'intérieur de la for boucle, mais il ne va à l'intérieur de la boucle. Utilisé pour prendre des entrées à partir d'un fichier de sorte din pas le remarquer plus tôt.

OriginalL'auteur firecast | 2012-10-14