[c] Comment saisir une chaine de caractères

Comment saisir une chaine de caractères [c] - C - Programmation

Marsh Posté le 22-01-2005 à 19:36:01    

J'ai honte, vraiment honte mais je n'arrive pas à saisir une chaîne de caractères en C. Pourtant je fais comme j'ai trouvé dans la doc, ça compile, avec GCC, mais ça ne marche pas. Voici l'extrait de mon code:
#define LG_MAX                  512  
char saisie[LG_MAX];
 
printf("Votre saisie:\n" );
scanf("%s",saisie);
//et là ça plante:
printf("%s",saisie);
 
Visiblement la valeur n'est pas saisie, pourquoi?
Merci.


Message édité par capitaine choc le 22-01-2005 à 19:57:35

---------------
.
Reply

Marsh Posté le 22-01-2005 à 19:36:01   

Reply

Marsh Posté le 22-01-2005 à 19:41:58    

parce que tu passes en paramètre '&saisie' au lieu de 'saisie'  
'saisie' est déjà un pointeur au départ


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-01-2005 à 19:49:48    

même en mettant saisie le résultat est le même.
J'ai aussi essayé de mettre %s au début, comme indiqué dans le K&R, idem...


---------------
.
Reply

Marsh Posté le 22-01-2005 à 19:58:02    

j'ai ré-expliqué mon problème car pas clair


---------------
.
Reply

Marsh Posté le 22-01-2005 à 20:12:49    

c pas un problème qu'il s'arrete au 1er espace non ?
car sinon au lieu de %s, tu peux le remplacer par %512[^\n]

Reply

Marsh Posté le 22-01-2005 à 20:16:50    

envoie un fflush(stdout) après le printf("%s",saisie)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-01-2005 à 23:18:02    

taz a déja donné plein de trucs, j'ai repondu a un precedent message en mettant le code, donc la fonction recherche elle est pas la pour rien


---------------
.
Reply

Marsh Posté le 22-01-2005 à 23:18:30    

Reply

Marsh Posté le 23-01-2005 à 10:04:04    

[Merci d'utiliser les balises pour le code. Boutons [fixe] ou  [C/C++]]

capitaine choc a écrit :



#define LG_MAX                  512  
char saisie[LG_MAX];
 
printf("Votre saisie:\n" );
scanf("%s",saisie);
//et là ça plante:
printf("%s",saisie);


Visiblement la valeur n'est pas saisie, pourquoi?


Probablement parce que tu n'a pas inclus <stdio.h>. D'autre part, il manque un '\n' ou un fflush(stdout)
 
http://mapage.noos.fr/emdel/notes.htm#fflush_stdout
 
Je te garanti que ce code est conforme :  


#include <stdio.h>
 
#define LG_MAX 512
 
int main (void)
{
   char saisie[LG_MAX];
 
   printf("Votre saisie:\n" );
   scanf("%s",saisie);
 
   /* absorber le '\n' non lu par le scanf() */
   (void) getchar();
   
   printf("%s\n",saisie);
 
/* 'pause'  
 * (necessaire sur certains IDE dont la fenetre d'execution  
 * se ferme trop vite...
 */
   (void) getchar();
 
   return 0;
}



Votre saisie:
123456
123456


Si il ne fonctionne pas chez toi, c'est que ta chaine de développement est bugguée ou mal configurée ou mal installée.
 
Ceci-dit, cette façon de saisir est peu recommandée, voire dangereuse.
 
http://mapage.noos.fr/emdel/notes.htm#saisie


Message édité par Emmanuel Delahaye le 23-01-2005 à 10:06:18

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-01-2005 à 10:05:04    

Harkonnen a écrit :

parce que tu passes en paramètre '&saisie' au lieu de 'saisie'  
'saisie' est déjà un pointeur au départ


C'est une adresse (a pointer constant)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-01-2005 à 10:05:04   

Reply

Marsh Posté le 23-01-2005 à 10:17:50    

Emmanuel Delahaye a écrit :

C'est une adresse (a pointer constant)


tiens, petite question ! j'ai remarqué chez moi que malgré l'absence de fflush(stdout) ou de '\n', la ligne était quand même affichée.
idem en C++ si je fais un cout << "toto", le 'toto' s'affiche malgré l'absence du << endl.
as tu une explication ?
 
edit: je suis sous windows, j'ai testé avec le compilateur de Visual Studio 2003


Message édité par Harkonnen le 23-01-2005 à 10:19:11

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-11-2012 à 21:13:30    

comment je mettre sa dans une fonction avec retour ,Voici l'extrait de mon code:  
 
 
 #include<stdio.h>
#include<string.h>
int main ()
{
char CIN[8] ;
 
int verif1;
 
 
                     verif1=1;
                        do{          
                            printf(" Enter votre cin\n" );
                            gets(CIN);
                             
                            if (strlen(CIN)!= 8 )
                            {verif1=0;
                             
                            printf(" votre CIN est invalide\n" );
                            }
                             else {
                            printf(" bien saisir\n" );
                            verif1=1;
                                }
                             
                            }while (verif1==0);
 
return 0;
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed