Tableau char
Résolu
ld09
Messages postés
9
Statut
Membre
-
ld09 Messages postés 9 Statut Membre -
ld09 Messages postés 9 Statut Membre -
Bonjour,
je veux afficher un tableau char(que je saisis avec scanf ) avec printf c'est un tableau 3x3 et quand je l'affiche il manque les 2 dernieres cases (les cases [2][1] et [2])
par exemple si je rentre
xxx
xxx
xxx
cela m'affiche
xxx
xxx
x
voici le code
#include <stdio.h>
#define n 3
int main( )
{
char arr[n][n];
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%c",&arr[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%c",arr[i][j]);
}
}
return 0;
}
Merci beaucoup
je veux afficher un tableau char(que je saisis avec scanf ) avec printf c'est un tableau 3x3 et quand je l'affiche il manque les 2 dernieres cases (les cases [2][1] et [2])
par exemple si je rentre
xxx
xxx
xxx
cela m'affiche
xxx
xxx
x
voici le code
#include <stdio.h>
#define n 3
int main( )
{
char arr[n][n];
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%c",&arr[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%c",arr[i][j]);
}
}
return 0;
}
Merci beaucoup
2 réponses
-
Bonjour,
Tu affiche bien les 9 premiers caractères que tu as tappé c-a-d :
x x x CR x x x CR x
La première ligne contient x x x
La seconde contient CR x x
La troisème x CR x
les caractères entrés ont été mémorisées et ont été retranscrits.-
-
Bonjour,
Tu lis des char, donc le \n est rajouté dans le tableau. Tu auras par exemple arr[0][0] = 'c' arr[0][1] qui vaut '\n' si l'utilisateur appuie sur la touche 'c' et valide.
Il faut donc traiter ce cas.
Par exemple :int c; c=getchar(); if (c!='\n' || c!=EOF) { arr[i][j]=c; }
à mettre à la place de ton scanf(). -
-
-
int main(void){
char tab[3][3];
int i, j;
for(i = 0; i < 3 ; i++){
for(j = 0; j < 3 ; j++){
scanf("%c",&tab[i][j]);
printf("\nRemplissage [%d,%d] %c",i,j,tab[i][j]);
}
}
for(i = 0; i < 3 ; i++){
for(j = 0; j < 3 ; j++){
if(j==0) printf("\n");
printf("%c ",tab[i][j]);
}
}
return 0 ;
}
ça fonctionne si on rempli donne tout le contenu du tableau d'un coup :
$./ta
abcdefghi
Remplissage [0,0] a
Remplissage [0,1] b
Remplissage [0,2] c
Remplissage [1,0] d
Remplissage [1,1] e
Remplissage [1,2] f
Remplissage [2,0] g
Remplissage [2,1] h
Remplissage [2,2] i
a b c
d e f
g h i
Par contre si on donne lettre par lettre le scanf capture le \n dans le buffer je suppose, du coup ça crée des problèmes