Newsgroup: it.comp.lang.c
Titolo: [?]Perchè succede questo ...?

salve a tutti , premetto , uso Djgpp , ho un problema , creo un array di
char
char schedina [12][3]={ e lo inizializzo con \0\0\0 ect}
lo stampo
for(a1=0;a1<=12;a1++){
for(a2=0;a2<=3;a2++){
printf("Riga[%2d][%2d]=%c\n",a1,a2,schedina[a1][a2]);
                        }
printf("\n");
                          } ed e vuoto , ovviamente ,
poi aggiungo tramite una scanf dei caratteri , (ho provato anche con gets)
for(a1=0;a1<=12;a1++){
printf("Riga[%2d]:\t",a1);scanf("%s",riga);
for(a2=0;a2<=3;a2++){
schedina[a1][a2]=riga[a2];}}
che possono essere 1x2 oppure altro , posso
scriverne anche soltanto uno , ma succede questo , quando stampo l'array
come quello
quì sotto , mi trovo nella posizione  [0][3] un segno che non
dovrebbe esserci
e cosi anche in tutte le posizioni [n][3] , anche se ho inserito solo un
carrattere , ripeto
l'array e stato inizializzato con \0\0\0 per tutte le righe , e non riesco
a capire perche
pur inserendo un solo carattere , mi ritrovo nella posizione [n][3] di
tutte le righe il carattere
che si trova nella posizione [0][0] o [1][0] .
C'è qualcuno che mi sa dire qualchecosa?perchè nella posizione [n][3] non
trovo \0?=null
Grazie a tutti
Ciao Roberto
Riga[ 0][ 0]=1          Riga[ 0][ 1]=          Riga[ 0][ 2]= Riga[ 0][ 3]=1
Riga[ 1][ 0]=1          Riga[ 1][ 1]=          Riga[ 1][ 2]= Riga[ 1][ 3]=1
Riga[ 2][ 0]=1          Riga[ 2][ 1]=          Riga[ 2][ 2]= Riga[ 2][ 3]=1
Riga[ 3][ 0]=1          Riga[ 3][ 1]=          Riga[ 3][ 2]= Riga[ 3][ 3]=1
Riga[ 4][ 0]=1          Riga[ 4][ 1]=         Riga[ 4][ 2]= Riga[ 4][ 3]=1
Riga[ 5][ 0]=1          Riga[ 5][ 1]=         Riga[ 5][ 2]= Riga[ 5][ 3]=1
Riga[ 6][ 0]=1          Riga[ 6][ 1]=         Riga[ 6][ 2]= Riga[ 6][ 3]=1
Riga[ 7][ 0]=1          Riga[ 7][ 1]=         Riga[ 7][ 2]= Riga[ 7][ 3]=1
Riga[ 8][ 0]=1          Riga[ 8][ 1]=         Riga[ 8][ 2]= Riga[ 8][ 3]=1
Riga[ 9][ 0]=1          Riga[ 9][ 1]=         Riga[ 9][ 2]= Riga[ 9][ 3]=1
Riga[10][ 0]=1         Riga[10][ 1]=        Riga[10][ 2]= Riga[10][ 3]=1
Riga[11][ 0]=1         Riga[11][ 1]=        Riga[11][ 2]= Riga[11][ 3]=1
Riga[12][ 0]=1         Riga[12][ 1]=        Riga[12][ 2]= Riga[12][ 3]=1

 schedina[a1][a2]=riga[a2];
Ciao.

                           } ed e vuoto , ovviamente ,
Ciao Alberto,
prova questo codice e cambia pure le parti che non ti aggradano.
Note: la n serve per indicare la casella non contrassegnata.
Per qualunque problema non esitare a chiamarmi.
#include <stdio.h>
#include <stdlib.h>
int main()
{
       char schedina [12][3];
       int a1, a2;
       int c1;
       char riga[2];
       for(a1 = 0; a1 < 12; a1++) for(a2 = 0; a2 < 3; ++a2) schedina[a1][a2]
= '\0';
       for(a1=0;a1<12;a1++){
           printf("Riga[%2d]:\t",a1 + 1);
           scanf("%s",riga);
           if(riga[0] == '1') {
                              schedina[a1][0] = '1';
                              schedina[a1][1] = 'n';
                              schedina[a1][2] = 'n';
                              }
           else if(riga[0] == 'x') {
                              schedina[a1][1] = 'x';
                              schedina[a1][0] = 'n';
                              schedina[a1][2] = 'n';
                              }
           else if(riga[0] == '2'){
                            schedina[a1][2] = '2';
                            schedina[a1][1] = 'n';
                            schedina[a1][0] = 'n';
                            }
           else for(a2 = 0; a2 < 3; ++a2) schedina[a1][a2] = 'n';
       }
       printf("\n");
       for(a1 = 0;a1 < 12 ;a1++)
       for(a2 = 0; a2 < 3; a2++)  {
              getchar();
              printf("riga[%2d] = %c",a1 + 1, schedina[a1][a2]);
       }
      printf("\n");
      system("PAUSE");
      return 0;
}
Ciao.

                           } ed e vuoto , ovviamente ,
Ciao Alberto,

#include <stdio.h>
#include <stdlib.h>

              printf("riga[%2d] = %c",a1 + 1, schedina[a1][a2]);
       }
      printf("\n");


                           } ed e vuoto , ovviamente ,
Ciao Alberto,

#include <stdio.h>
#include <stdlib.h>

              printf("riga[%2d] = %c",a1 + 1, schedina[a1][a2]);
       }
      printf("\n");
