[C] Pourquoi mon programme ne fonctionne pas
badside
-
jisisv Messages postés 3645 Date d'inscription Statut Modérateur Dernière intervention -
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.
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.
A voir également:
- [C] Pourquoi mon programme ne fonctionne pas
- Programme demarrage windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
1 réponse
Ceci fonctionne mieux:
Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
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)