C - problème chaine espaces
Résolu
capa57
Messages postés
352
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, J'ai un petit soucis avec un mon code...mon programme doit demander à l'utilisateur de tapper une phrase, et de la mettre dans un fichier...tant qu'il a pas appuyé sur la touche "entrer", l'utilisateur peut taper ce qu'il veut (phrase avec espaces entre autre...) mais mon problème c'est que tout fonctionne sauf que ma phrase n'est pas pris en compte complètement... il s'arrête au 1er espace trouvé ...
Voici mon code mais ça ne fonctionne pas j'arrive juste à prendre le 1er mot que je tappe au clavier... dès que je tappe un espace il s'arrête là.... comment faire pour récupérer ma phrase entière avec des espaces et autres caractères svp ... ?
#include <stdio.h>
int main(char argc, char *argv[]){
char nom[20]; // mon tableau de caractère pour le fichier que je vais créer.
char phrase[100]; // mon tableau de caractères pour la phrase que je vais rentrer au clavier
// int taille = sizeof(phrase)/sizeof(phrase[0]);
//création de mon fichier
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");
//on demande à l'utilisateur de rentrer une phrase.
printf("Entrez une phrase \n");
scanf("%s", phrase);
//affiche ma phrase
printf("phrase : %s \n", phrase); // il ne m'affiche que le 1er mot que je rentre et s'arrette au premier espace trouvé.
//mettre ma phrase dans mon fichier créé auparavant.
fprintf(fichier,"%s\n",phrase);
}
Voici mon code mais ça ne fonctionne pas j'arrive juste à prendre le 1er mot que je tappe au clavier... dès que je tappe un espace il s'arrête là.... comment faire pour récupérer ma phrase entière avec des espaces et autres caractères svp ... ?
#include <stdio.h>
int main(char argc, char *argv[]){
char nom[20]; // mon tableau de caractère pour le fichier que je vais créer.
char phrase[100]; // mon tableau de caractères pour la phrase que je vais rentrer au clavier
// int taille = sizeof(phrase)/sizeof(phrase[0]);
//création de mon fichier
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");
//on demande à l'utilisateur de rentrer une phrase.
printf("Entrez une phrase \n");
scanf("%s", phrase);
//affiche ma phrase
printf("phrase : %s \n", phrase); // il ne m'affiche que le 1er mot que je rentre et s'arrette au premier espace trouvé.
//mettre ma phrase dans mon fichier créé auparavant.
fprintf(fichier,"%s\n",phrase);
}
A voir également:
- C - problème chaine espaces
- Espaces insécables - Guide
- Chaine tnt gratuite sur mobile - Guide
- Chaine radio - Télécharger - Médias et Actualité
- Plus de chaine tv - Guide
- Chaine musique bouygues - Accueil - Guide TV et vidéo
6 réponses
Salut,
c'est normal, pour la fonction scanf l'espace est un separateur donc tu ne peux recuperer que des mots, utilise la fonction fgets
fgets(phrase,100,stdin);
c'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air k.on !
c'est normal, pour la fonction scanf l'espace est un separateur donc tu ne peux recuperer que des mots, utilise la fonction fgets
fgets(phrase,100,stdin);
c'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air k.on !
j'ai remplacer scanf("%s", phrase); par fgets(phrase,100,stdin); mais maintenant il me propose plus de taper quelque chose au clavier ... le programme coupe directement
oups! j'ai oublié te te dire, le scanf précedent laisse trainer un '\n' dans le
buffer, il faut donc le vider sinon c'est fgets qui le récupére et tu as l'impression qu'il ne marche pas, d'où le 2eme appel nécessaire.
place getchar() juste avant fgets, c'est plus propre que 2 fgets (:-)
c'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air k.on !
buffer, il faut donc le vider sinon c'est fgets qui le récupére et tu as l'impression qu'il ne marche pas, d'où le 2eme appel nécessaire.
place getchar() juste avant fgets, c'est plus propre que 2 fgets (:-)
c'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air k.on !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
thanks ça marche maintenant ;)
pour ceux qui veulent le code..
#include <stdio.h>
int main(char argc, char *argv[]){
char nom[20],phrase[100];
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");
printf("Entrez une phrase \n");
getchar();
fgets(phrase,100,stdin);
printf("phrase : %s", phrase);
fprintf(fichier,"%s\n",phrase);
}
pour ceux qui veulent le code..
#include <stdio.h>
int main(char argc, char *argv[]){
char nom[20],phrase[100];
FILE *fichier;
printf("nom du fichier ? \n");
scanf("%s", nom);
fichier=fopen(nom,"w");
printf("Entrez une phrase \n");
getchar();
fgets(phrase,100,stdin);
printf("phrase : %s", phrase);
fprintf(fichier,"%s\n",phrase);
}