[C] Pourquoi mon programme ne fonctionne pas

badside -  
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   -
Salut tout le monde,

Je débute dans le C et j'aimerai savoir pourquoi le programme suivant ne fonctionne pas au niveau de la fonction "definebloc" (voir les commentaires à côté de la fonction) :



#include <stdio.h>

#define taille_tableau 10

void definebloc(char tableau_de_char[]);
void affichage(char tableau_de_char[]);

void main(void)
{
char tableau[taille_tableau];

definebloc(tableau);
affichage(tableau);
fflush(stdin);
getchar();
}

void definebloc (char tab[])
{
int i=0;

printf("Introduisez la phrase a encadrer :\n\n");
do
{
fflush(stdin);
scanf("%c",&tab[i]);
i++;
}while(tab[i-1] != '\10'); //PROBLEME : la boucle continue même si j'entre "enter" pour aller à la ligne. Pourtant le code ascii pour aller à la ligne est bien "10".
}

void affichage(char tab[])
{
int i=0;

while(tab[i] != '\10')
{
printf("%c", tab[i]);
i++;
}
}




Merci d'avance pour vos réponses.
Bien à vous.
Badside.

1 réponse

jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
Ceci fonctionne mieux:
johand@horus:~/src/c/test$ cat chars.c
#include <stdio.h>

#define taille_tableau 10

void definebloc(char tableau_de_char[]);
void affichage(char tableau_de_char[]);

int main(void)
{
char tableau[taille_tableau];

definebloc(tableau);
affichage(tableau);
fflush(stdin);
return 0;
//getchar();
}

void definebloc (char tab[])
{
int i=0;

printf("Introduisez la phrase a encadrer :\n\n");
do
{
fflush(stdin);
scanf("%c",&tab[i]);
i++;
}while(tab[i-1] != '\n'); //PROBLEME : la boucle continue même si j'entre "enter" pour aller à la ligne. Pourtant le code ascii pour aller à la ligne est bien "10".
}

void affichage(char tab[])
{
int i=0;

while(tab[i] != '\n')
{
printf("%c\t%d\n", tab[i], tab[i]);
i++;
}
}
johand@horus:~/src/c/test$ make chars
cc     chars.c   -o chars
johand@horus:~/src/c/test$ ./chars
Introduisez la phrase a encadrer :

azerty
a       97
z       122
e       101
r       114
t       116
y       121

 '\010'  est le caractère octal  10 (8 décimal)
johand@horus:~/src/c/test$ cat mychar.c
#include <stdio.h>

int main(void)
{
char mychar='\010';
printf("%c==>%d\n", mychar, mychar);
}
johand@horus:~/src/c/test$ ./mychar |od -ax
0000000  bs   =   =   >   8  nl
        3d08 3e3d 0a38
0000006

Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
0