, her şey iyi çalışıyor görünüyor: Açılış ve okuma, ancak çöp değerlerini yazdırıyor neden anlamıyorum.Baskı Partition Table C programı
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;
}
yerine bölümleme tablosunun çöp yazdırıyor: Burada
kodudur.Ben bazı temel anlayış sorunları olabilir ama ben uzun zamandır Google ile arama ama gerçekten yardımcı olmadı. Ayrıca fdisk'in kaynak kodunu gördüm ama bu noktada benim anlayışımın ötesinde. Lütfen bana rehberlik edebilir misiniz? Birisinin hatamı temizlemesini ve çalışma kodunu vermesini beklemiyorum. Sadece bir cümle veya iki - veya herhangi bir bağlantı.
Eğer 'fdisk' veya diğer bölünmesi uygulamasının kaynak koduna bakarak düşünün mü? –
@BasileStarynkevitch Starynkevitch Evet görevinden göre yaptılar. @Adorn Sorununuz bu satırda mı oluşur? 'Printf ("\ n \ t \ t ************* bölme Tablo **************** \ n \ n"); '? Yoksa bundan sonra çıktı mı demek istediniz? – xQuare
'drive'variable türü nedir? –