[C] faire un scanf d'un espace

faire un scanf d'un espace [C] - Programmation

Marsh Posté le 06-01-2002 à 12:26:39    

je voudrais faire un scanf de caractère puis les incorporés dans un tableau .....l'espace n'est pas pris en compte.
Comment y faut faire SVP!!?? Merci  :??:

Reply

Marsh Posté le 06-01-2002 à 12:26:39   

Reply

Marsh Posté le 06-01-2002 à 12:28:27    

gets


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-01-2002 à 12:29:41    

gets????
tu peux être un peu plus précis ou me donner un exemple s'il te plaît?
Merci :jap:

Reply

Marsh Posté le 06-01-2002 à 12:32:36    

gets
Syntax
 
#include <stdio.h>
char *gets(char *s);
 
Description
 
Gets a string from stdin.
gets collects a string of characters terminated by a new line from the standard input stream stdin and puts it into s. The new line is replaced by a null character (\0) in s.
gets allows input strings to contain certain whitespace characters (spaces, tabs). gets returns when it encounters a new line; everything up to the new line is copied into s.
The gets function is not length-terminated. If the input string is sufficiently large, data can be overwritten and corrupted. The fgets function provides better control of input strings.
 
Note: For Win32s or Win32 GUI applications, stdin must be redirected.
 
Return Value
 
On success, gets returns the string argument s.
On end-of-file or error, it returns NULL
 
Borland C++ 5.0 Programmer's Guide

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-01-2002 à 12:34:42    

/* gets example */
 
#include <stdio.h>
 
int main(void)
{
   char string[80];
 
   printf("Input a string:" );
   gets(string);
   printf("The string input was: %s\n", string);
   return 0;
}
 
Borland C++ 5.0 Programmer's Guide


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-01-2002 à 12:46:02    

voilà une partie de mon p'tit programme
 
do  {
 scanf (" %c",&saisie);
 
 if (saisie!='0';)
 {
 nb_car++;
 tab_saisie=(char *)realloc(tab_saisie,nb_car*sizeof (char));
 if (saisie==" " )<= probleme pour dire c un espace
 
        {        
 tab_saisie[nb_car-1]='X';
      printf("coucou" );}
 else tab_saisie[nb_car-1]=saisie;
 }
   }
 
while (tab_saisie[i]!='0';);
 
 
for (i=0;i<nb_car;i++)
printf ("%c ",tab_saisie[i]);
free (tab_saisie);
 
le problème étant de traiter caractère par caractère l'entrée clavier sans virer les espaces pour insérer les caractères dans un tableau dynamique qui traitera chaque caractère indépendamment.
une idée sans les "string" STP. Merci

Reply

Marsh Posté le 06-01-2002 à 12:59:12    

getch
Syntax
 
#include <conio.h>
int getch(void);
 
Description
 
Gets character from keyboard, does not echo to screen.
getch reads a single character directly from the keyboard, without echoing to the screen.
 
Note: Do not use this function for Win32s or Win32 GUI applications.  
 
Return Value
 
getch returns the character read from the keyboard.
 
/* getch example */  
 
#include <conio.h>
#include <stdio.h>
 
int main(void)
{
  int c;
  int extended = 0;
  c = getch();
  if (!c)
    extended = getch();
  if (extended)
    printf("The character is extended\n" );
  else
    printf("The character isn't extended\n" );
 
  return 0;
}
 
Borland C++ 5.0 Programmer's Guide
Marche po sous nunux


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-01-2002 à 13:34:15    

Merci c vachement sympa...j'ai utilisé getche() ....
 
au fait,tant que j'y suis, comment peut-on retourner à la ligne lorsque l'on tape sur la touche "enter"?
 
peut-ête avec la valeur ASCII que je ne connais pas ;-)
 
if (saisie ='\x???? ';)
   printf("\n" );
 
merci d'avance  ;)

Reply

Marsh Posté le 06-01-2002 à 13:44:14    

stipe a écrit a écrit :

Merci c vachement sympa...j'ai utilisé getche() ....
 
au fait,tant que j'y suis, comment peut-on retourner à la ligne lorsque l'on tape sur la touche "enter"?
 
peut-ête avec la valeur ASCII que je ne connais pas ;-)
 
if (saisie ='\x???? ';)
   printf("\n" );
 
merci d'avance  ;)  




if (saisie ='\n';)
   printf("\n" );

ou
if (saisie = 13)
   printf("\n" );

test les 2....


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-01-2002 à 14:12:46    

:jap: merci , tout va pour le mieux dans le meilleur des mondes!
 
il faut faire if (valeur=13)..............

Reply

Marsh Posté le 06-01-2002 à 14:12:46   

Reply

Marsh Posté le 06-01-2002 à 14:19:19    

stipe a écrit a écrit :

:jap: merci , tout va pour le mieux dans le meilleur des mondes!
 
il faut faire if (valeur=13)..............  




2 rien
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 08-01-2002 à 20:52:39    

Ahhhh !!
Il ne faut JAMAIS utiliser gets() !!
gets() ne vérifie pas la taille de la chaîne qu'il lui est donnée, et écrit quand même, quite à écraser la mémoire qui est après, ce qui fera inévitablement planter le programme. Il faut utiliser fgets() à la place.
Cette fonction est tellement à banir, que gcc (le compilateur sous Linux) te prévient de ne pas l'utiliser au moment de la compilation !

Reply

Marsh Posté le 21-05-2008 à 15:35:13    

Je sais que ça date ce post mais...
si tu fais:

Code :
  1. if (valeur=13)


et bien valeur va valoir 13 et comme ton if test une affectation, il sera toujours vrai  :pfff:  
 
Aussi, pour éviter ce genre de mésaventure j'utilise toujours ce type d'écriture:

Code :
  1. if(13==valeur)


Comme ça, si par erreur tu ne met que un seul '=', ton compilo va brère car tu tentes d'affecter une constante.
Ca évite beaucoup d'erreur...
 
A+

Reply

Marsh Posté le 21-05-2008 à 15:36:52    

superbe déterrage, on avait tous arrêté de respirer depuis.

Reply

Sujets relatifs:

Leave a Replay

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