faire un scanf d'un espace [C] - Programmation
Marsh Posté le 06-01-2002 à 12:28:27
gets
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
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]
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
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
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
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
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....
Marsh Posté le 06-01-2002 à 14:12:46
merci , tout va pour le mieux dans le meilleur des mondes!
il faut faire if (valeur=13)..............
Marsh Posté le 06-01-2002 à 14:19:19
stipe a écrit a écrit : merci , tout va pour le mieux dans le meilleur des mondes! il faut faire if (valeur=13).............. |
2 rien
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 !
Marsh Posté le 21-05-2008 à 15:35:13
Je sais que ça date ce post mais...
si tu fais:
Code :
|
et bien valeur va valoir 13 et comme ton if test une affectation, il sera toujours vrai
Aussi, pour éviter ce genre de mésaventure j'utilise toujours ce type d'écriture:
Code :
|
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+
Marsh Posté le 21-05-2008 à 15:36:52
superbe déterrage, on avait tous arrêté de respirer depuis.
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