111 votes

Lire la chaîne de l'entrée avec un espace ?

J'utilise Ubuntu et j'utilise également Geany et CodeBlock comme IDE. Ce que j'essaie de faire, c'est de lire une chaîne (comme "Barack Obama" ) et de la mettre dans une variable :

 #include <stdio.h>

int main(void)
{
    char name[100];

    printf("Enter your name: ");
    scanf("%s", name);
    printf("Your Name is: %s", name);

    return 0;
}

Production:

 Enter your name: Barack Obama
Your Name is: Barack

Comment puis-je faire en sorte que le programme lise le nom en entier ?

21voto

Sridhar Iyer Points 1186

Essaye ça:

 scanf("%[^\n]s",name);

\n définit simplement le délimiteur de la chaîne analysée.

7voto

kyle k Points 695

Voici un exemple de la façon dont vous pouvez obtenir une entrée contenant des espaces en utilisant la fonction fgets .

 #include <stdio.h>

int main()
{
    char name[100];
    printf("Enter your name: ");
    fgets(name, 100, stdin); 
    printf("Your Name is: %s", name);
    return 0;
}

5voto

animesh Points 75
scanf(" %[^\t\n]s",&str);

str est la variable dans laquelle vous obtenez la chaîne.

2voto

Ritesh Sharma Points 39

REMARQUE : lorsque vous utilisez fgets(), le dernier caractère du tableau sera "\n" lorsque vous utilisez fgets() pour de petites entrées dans CLI (interpréteur de ligne de commande), lorsque vous terminez la chaîne par "Entrée". Ainsi, lorsque vous imprimez la chaîne, le compilateur ira toujours à la ligne suivante lors de l'impression de la chaîne. Si vous voulez que la chaîne d'entrée ait un comportement semblable à une chaîne à terminaison nulle, utilisez ce simple hack.

 #include<stdio.h>
int main()
{
 int i,size;
 char a[100];
 fgets(a,100,stdin);;
 size = strlen(a);
 a[size-1]='\0';

return 0;
}

Mise à jour : mise à jour avec l'aide d'autres utilisateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X