Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1062 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [c] Comment saisir une chaine de caractères

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] Comment saisir une chaine de caractères

n°959421
capitaine ​choc
Posté le 22-01-2005 à 19:36:01  profilanswer
 

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

---------------
.
mood
Publicité
Posté le 22-01-2005 à 19:36:01  profilanswer
 

n°959422
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 22-01-2005 à 19:41:58  profilanswer
 

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)
n°959426
capitaine ​choc
Posté le 22-01-2005 à 19:49:48  profilanswer
 

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...


---------------
.
n°959427
capitaine ​choc
Posté le 22-01-2005 à 19:58:02  profilanswer
 

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


---------------
.
n°959430
pains-aux-​raisins
Fatal error
Posté le 22-01-2005 à 20:12:49  profilanswer
 

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]

n°959434
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 22-01-2005 à 20:16:50  profilanswer
 

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


---------------
J'ai un string dans l'array (Paris Hilton)
n°959569
didier1809
${citation_perso}
Posté le 22-01-2005 à 23:18:02  profilanswer
 

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


---------------
.
n°959570
didier1809
${citation_perso}
Posté le 22-01-2005 à 23:18:30  profilanswer
 
n°959714
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-01-2005 à 10:04:04  profilanswer
 

[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/
n°959717
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-01-2005 à 10:05:04  profilanswer
 

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/
mood
Publicité
Posté le 23-01-2005 à 10:05:04  profilanswer
 

n°959733
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-01-2005 à 10:17:50  profilanswer
 

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)
n°2165361
kaouther
Posté le 24-11-2012 à 21:13:30  profilanswer
 

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;
}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [c] Comment saisir une chaine de caractères

 

Sujets relatifs
[Perl] extraction de chaineRenvoyer les valeurs commençant par XXX caractères.
Combien de caractères maxi sur une ligne shell unix ???[c] transformer une chaine en entier
Histoire de chaine[Fortran 95] Conversion de types numériques en chaine de caractères
imposer une fin de chaine par une touche particulièreSaisir un char* pour le retourner
concaténation de chaîne - jdk 1.5 
Plus de sujets relatifs à : [c] Comment saisir une chaine de caractères


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR