Pbm chaine de caracteres
sakura006
-
lami20j Messages postés 21644 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21644 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
bonjour tlm,
j'ai un petit souci en C. Je n'arrive pas à afficher une chaîne de caractères qui contient des espaces. J'ai bien créer un tableau de char mais il ne me lit que le 1er mot.
Je travaille sur DevC++ je sais qu'il est pas extra mais j'ai pas eclipse sous la main.
Si kk1 pouvait me donner un coup de main ca serait tres gentil. C'est assez pressé je doit faire un programme pour une entreprise.
Je vous laisse une partie de mon code pour que ca soit plus clair.
Merci.
int main(int argc, char *argv[])
{
// Déclaration des champs :
char motif[1] ;
char code[2] ;
char titre[41] ;
// Instructions Titre Général :
deb_titre: puts("Veuillez rentrer le titre general: ") ;
scanf("%s", &titre) ;
l_titre = strlen(titre) ;
if(l_titre > 40)
{
puts("Vous n'avez pas respecté le nombre de caractères. Veuillez recommencer.") ;
goto deb_titre ;
}
// Majuscules :
char *pString2 = min_maj(titre);
printf("%s\n", pString2);
free(pString2);
printf("%s", titre) ;
j'ai un petit souci en C. Je n'arrive pas à afficher une chaîne de caractères qui contient des espaces. J'ai bien créer un tableau de char mais il ne me lit que le 1er mot.
Je travaille sur DevC++ je sais qu'il est pas extra mais j'ai pas eclipse sous la main.
Si kk1 pouvait me donner un coup de main ca serait tres gentil. C'est assez pressé je doit faire un programme pour une entreprise.
Je vous laisse une partie de mon code pour que ca soit plus clair.
Merci.
int main(int argc, char *argv[])
{
// Déclaration des champs :
char motif[1] ;
char code[2] ;
char titre[41] ;
// Instructions Titre Général :
deb_titre: puts("Veuillez rentrer le titre general: ") ;
scanf("%s", &titre) ;
l_titre = strlen(titre) ;
if(l_titre > 40)
{
puts("Vous n'avez pas respecté le nombre de caractères. Veuillez recommencer.") ;
goto deb_titre ;
}
// Majuscules :
char *pString2 = min_maj(titre);
printf("%s\n", pString2);
free(pString2);
printf("%s", titre) ;
A voir également:
- Pbm chaine de caracteres
- Caractères spéciaux - Guide
- Caracteres speciaux - Guide
- Plus de chaine tv - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractères ascii - Guide
5 réponses
Salut,
c'est normal, puisque tu utilises scanf (qui prends comme séparateur un caractère blanc)
essaie avec gets
tu peux aussi utiliser fgets
c'est normal, puisque tu utilises scanf (qui prends comme séparateur un caractère blanc)
essaie avec gets
gets(titre)tu ne dois pas utliser &titre puisque le nom de tablea est un pointeur de caractère (dans ton cas titre point sur 1er élément du tableau titre[41] )
tu peux aussi utiliser fgets
Salut,
Enlève le & dans ton scanf :)
EDIT : Ah bah lamij20 l'a déjà dit !
Si tu peux travailler sur du C++, il y a cin.get aussi comme alternative (+cin.sync)
Enlève le & dans ton scanf :)
EDIT : Ah bah lamij20 l'a déjà dit !
Si tu peux travailler sur du C++, il y a cin.get aussi comme alternative (+cin.sync)
on m'a dit de ne pas le faire parce ke sinon soit il affiche l'adresse ou bien il y a une erreur.
J'ai quand meme essayé mais ca marche pas.
J'ai quand meme essayé mais ca marche pas.
bon alors j'ai viré tous les scanf qu'ils y avaient dans ttes les lignes de code et je les ai remplacé par des gets et ca marche. J'aimerai juste savoir pkoi le melange scanf et gets n'ai pas possible. C juste dans DevC++ ou c un defaut du C?
En tout cas merci tout le monde pour vos réponses.
En tout cas merci tout le monde pour vos réponses.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Par contre avec gets ca marche seulement si j'isole la partie intéressante. Lorsqu'il est dans le code principal je ne peux pas ecrire apres et il passe direct a l'instruction d'apres. :'(
Je te donne la partie du code dans le quel il est.
// Instructions Titre Général : deb_titre: puts("Veuillez rentrer le titre general: ") ; gets(titre) ; fflush(stdin) ; printf("%s", titre) ; l_titre = strlen(titre) ; if(l_titre > 40) { puts("Vous n'avez pas respecté le nombre de caractères. Veuillez recommencer.") ; goto deb_titre ; } if( l_titre < 40) { l_space = 40 - l_titre ; for( i = 0 ; i < l_space ; i++ ) { space[i] = ' ' ; } } // Majuscules : char *pString2 = min_maj(titre); printf("%s\n", pString2); free(pString2); printf("%s", titre) ;Merci qd meme de ton aide tres rapide