Tableau char

Résolu
ld09 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
ld09 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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


A voir également:

2 réponses

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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.
0
ld09 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour
comment je peux faire pour qu'il m'imprime uniquement les caractères (cad
xxx
xxx
xxx) et non CR?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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().
0
pkpkmépkpk Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   52 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
&&
et non
||
.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > pkpkmépkpk Messages postés 341 Date d'inscription   Statut Membre Dernière intervention  
 
Bien vu :-).
0
ld09 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
cela m'as bcp aidé merci!
0
Utilisateur anonyme
 
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
0