Création
d'entreprise
Posez votre question Signaler

Scanf et chaine de caracteres avec espaces [Résolu]

ajp55 81Messages postés 31 juillet 2011Date d'inscription 23 mai 2012Dernière intervention - Dernière réponse le 11 nov. 2011 à 12:00
Bonjour,
j'ai un problème lorsque j'utilise scanf pour lire une chaine de caractères contenant des espaces. avec l'utilisation de fgets ça marche, sauf que Linux renvoit un message me signalant que cette fonction est dangeureuse. j'opte alors pour le scanf.
voici mon code
#include <stdio.h>
#include <stdlib.h>

int main(){
    char *nom;
    nom=(char*)malloc(sizeof(char)*50);
    printf("Entrez votre nom et prenom : ");
    scanf("%s",nom);
    printf(" Votre nom est = %s",nom);
    return 0;
}

l'affichage s'arrête juste aprés l'espace. le prenom ne s'affiche pas.
merci d'avance pour votre aide.
Lire la suite 

Scanf et chaine de caracteres avec espaces »

5 réponses
Réponse
+0
moins plus
Tu peux utiliser scanf comme ceci

#include "stdio.h"

int main()
{
	char nom[50];
	
	printf("Entrez votre nom et prenom : ");
	scanf("%[^\n]",nom);
	printf("Votre nom est : %s",nom);
	
	return 0;
}
Pouet_forever - 10 nov. 2011 à 22:14
Tu pourrais aussi lui indiquer comment vider le buffer d'entrée, là s'il fait plusieurs scanf de suite il risque fort d'être surpris !
KX- 11 nov. 2011 à 12:00
C'est vrai il faudrait rajouter un getchar() après le scanf pour retirer le \n final.
Mais quitte à pointer l'erreur, ta contribution aurait été bien plus intéressante, si tu l'avais toi même résolu plutôt que d'attendre que je le fasse...
Ajouter un commentaire
Réponse
+0
moins plus
merci pour votre solution et ça marche.
mais pas une solution qui utiliserait les pointeurs du genre char*?
je voudrai faire de l'allocation dynamique.

vos solutions seront les bienvenues
KX- 10 nov. 2011 à 18:09
Tu peux reprendre ton code d'allocation dynamique d'avant, ça ne change rien.
Il n'y a que le scanf qui est différent.
Ajouter un commentaire
Ce document intitulé « scanf et chaine de caracteres avec espaces » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?