2tits questions sur scanf et printf

2tits questions sur scanf et printf - C - Programmation

Marsh Posté le 04-09-2003 à 16:22:57    

Bonjours,  
j'ai deux petites question débiles;  
 
1) Comment faire un scanf("%s", tmp); sans que les caractères tapés ne soient affichés? (exemple password)
 
2) Y a t'il moyen simple d'empêcher le cout de retourner à la ligne si ce qui veux être afficher sort du cadre d'un xterm? (et d'éventuellement ne pas afficher la parti trop longue le cas échéant)
 
merci


Message édité par peak le 05-09-2003 à 09:58:13
Reply

Marsh Posté le 04-09-2003 à 16:22:57   

Reply

Marsh Posté le 04-09-2003 à 16:25:52    

1) voir avec ton systme et une bibliothèque spécialisée qui te fournira un ruc gnere noecho(). ne jamais utiliser scanf("%s" )
2) j'assume que tu parles de C. connais pas cout. aucun moyen. les émulateurs prennent et formatent à leur gise: quel est l'interet d'ecrire du texte pour qu'il ne soit pas affiché?

Reply

Marsh Posté le 04-09-2003 à 16:30:08    

Merci de donner un titre plus clair à ton topic aussi...


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

Marsh Posté le 04-09-2003 à 18:18:52    

Désolé pour le titre!  :sweat:  
 
1)"ne jamais utiliser scanf("%s" )" pourquoi?
 
2)Pour le "cout", je voulais dire une écriture sur la sortie standard.  
En fait le bute étai juste d'être sûr de garder une certaine mise en forme et éventuellement élargir la fenêtre si ça dépassai mais c'est pas cruciale ou du moins je peux trouver des solutions plus intelligentes pour éviter un maximum ce problème, je voulais juste être sûr qu'il n'existait pas une super technique révolutionnaire permettant de le faire facilement et systématiquement.  :ange:

Reply

Marsh Posté le 04-09-2003 à 18:27:12    

Code :
  1. char buffer[10] // je rpévois large
  2. scanf("%s", buffer);


 

0123456789 <Entrée> ***boom***

Reply

Marsh Posté le 04-09-2003 à 19:37:21    

Tu me conseilles de faire comment?

Reply

Marsh Posté le 04-09-2003 à 19:46:13    

while (caractere pas egal à ENTER)
 saisir,\b, afficher une etoile
 
non?  :??:

Reply

Marsh Posté le 04-09-2003 à 19:47:01    

polo021 a écrit :

while (caractere pas egal à ENTER)
 saisir,\b, afficher une etoile
 
non?  :??:  


y'a des chances que ta focntion de saisie attendent un \n pour te renvoyer le resultat. Sous nux j'avais du passer par curse

Reply

Marsh Posté le 04-09-2003 à 19:48:24    

scanf %1d   c'est possible?
 
edit : getchar


Message édité par polo021 le 04-09-2003 à 19:50:49
Reply

Marsh Posté le 04-09-2003 à 19:56:50    

Peak a écrit :

Désolé pour le titre!  :sweat:  


Tu voudrais pas le changer par hasard ?


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

Marsh Posté le 04-09-2003 à 19:56:50   

Reply

Marsh Posté le 04-09-2003 à 20:52:35    

Peak a écrit :

Tu me conseilles de faire comment?

Message de Dieu :

Code :
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<stdlib.h>
  4. void quit() // write error message and quit
  5. {
  6.   fprintf(stderr,"memory exhausted\n" ) ;
  7.   exit(1) ;
  8. }
  9. int main()
  10. {
  11.   int max = 20;
  12.   char* name= (char*)malloc(max) ; // allocate buffer
  13.   if (name == 0) quit() ;
  14.   printf("Please enter your first name:\n" ) ;
  15.  
  16.   while (true) { // skip leading whitespace
  17.     int c = getchar() ;
  18.     if (c == EOF) break; // end of file
  19.     if (!isspace(c)) {
  20.       ungetc(c,stdin) ;
  21.       break;
  22.     }
  23.   }
  24.   int i = 0;
  25.   while (true) {
  26.     int c = getchar() ;
  27.     if (c == ´\n´ || c == EOF) { // at end; add terminating zero
  28.       name[i] = 0;
  29.       break;
  30.     }
  31.     name[i] = c;
  32.     if (i==max-1) { // buffer full
  33.       max = max+max;
  34.       name= (char*)realloc(name,max) ; // get a new and larger buffer
  35.       if (name == 0) quit() ;
  36.     }
  37.     i++;
  38.   }
  39.   printf("Hello %s\n",name) ;
  40.   free(name) ; // release memory
  41.   return 0;
  42. }

:D
 
Edit : mise en forme


Message édité par *syl* le 04-09-2003 à 20:56:35
Reply

Marsh Posté le 04-09-2003 à 21:55:50    

fgets les mecs
ou getline si votre système en dispose (sinon on a du poster plusieurs fois une implémentation possible)

Reply

Marsh Posté le 05-09-2003 à 10:08:14    

merci pour vos réponses  :jap:  
 
Je ne pensai pas que scanf("%s" ) était si foireux, c'est ce que j'ai toujours utilisé en C, j'en ai un beau paquet à changer mais merci du conseil.

Reply

Sujets relatifs:

Leave a Replay

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