[C] Pourquoi mon programme ne fonctionne pas
badside
-
jisisv Messages postés 3678 Statut Modérateur -
jisisv Messages postés 3678 Statut Modérateur -
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
- Programme word gratuit - Guide
- Message programmé iphone - 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)