Sto provando a stampare una tabella delle partizioni utilizzando il linguaggio di programmazione C, tutto sembra funzionare correttamente: apertura e lettura, ma non capisco perché sta stampando i valori obsoleti.Stampa tabella delle partizioni - Programma C
Ecco il codice:
struct partition
{
unsigned char drive;
unsigned char chs_begin[3];
unsigned char sys_type;
unsigned char chs_end[3];
unsigned char start_sector[4];
unsigned char nr_sector[4];
};
int main()
{
int gc = 0, i = 1, nr = 0, pos = -1, nw = 0;
int fd =0;
char buf[512] ;
struct partition *sp;
printf("Ok ");
if ((fd = open("/dev/sda", O_RDONLY | O_SYNC)) == -1)
{
perror("Open");
exit(1);
}
printf("fd is %d \n", fd);
pos = lseek (fd, 0, SEEK_CUR);
printf("Position of pointer is :%d\n", pos);
if ((nr = read(fd, buf, sizeof(buf))) == -1)
{
perror("Read");
exit(1);
}
close(fd);
printf("Size of buf = %d\n and number of bytes read are %d ", sizeof(buf), nr);
if ((nw = write(1, buf, 64)) == -1)
{
printf("Write: Error");
exit(1);
}
printf("\n\n %d bytes are just been written on stdout\n", nw,"this can also be printed\n");
printf("\n\t\t*************Partition Table****************\n\n");
for (i=0 ; i<4 ; i++)
{
sp = (struct partition *)(buf + 446 + (16 * i));
putchar(sp -> drive);
}
return 0;
}
Si sta stampando spazzatura invece di tabella delle partizioni.
Potrei avere alcuni problemi di base ma ho cercato con Google per molto tempo ma non è stato di grande aiuto. Ho anche visto il codice sorgente di fdisk, ma a questo punto è fuori dalla mia comprensione. Qualcuno potrebbe guidarmi per favore? Non mi aspetto che qualcuno possa cancellare il mio errore e darmi il codice di lavoro. Solo una frase o due - o qualsiasi link.
Forse si considera esaminando il codice sorgente del 'fdisk' o altre utilità di partizionamento? –
@BasileStarynkevitch Starynkevitch Sì ha fatto secondo il suo post. @Adorn Il tuo problema si verifica in questa linea? 'printf (" \ n \ t \ t ************* Tabella delle partizioni **************** \ n \ n ");'? O intendevi l'uscita dopo? – xQuare
qual è il tipo di variabile 'drive'? –