Új hozzászólás Aktív témák

  • Cicero

    őstag

    Alakul a dolog, de megint elakadtam. Bináris állományból olvasnék ami pl 2A 42 42 2B. Ezt beolvasva egy stringbe ASCII kódokat kapok: " *BB+ ". Tehát 4 karaktert? Most ezeket meg kell cseréljem (least significant, most significant bit miatt), for ciklussal. Azután pedig a (+BB*) értékét át kell írjam decimálisba. Erre ezt a progit írtam:

    int main(){
    char s[5];
    FILE *f;
    int i, x, j=3;
    char sc[5];
    f=fopen("TEST.DAT", "rb");
    if(f==NULL){
    puts("hiba");
    }
    fread(s,1,4,f);
    /*printf("igy nez ki %s", s);*/
    strcpy(sc,s);
    /*printf("\nmegmasolva %s", sc);*/
    for(i=0;i<4;){
    s[i]=sc[j];
    j--;
    i++;
    }
    /*printf("\nmost megcserelve: %s", s);*/
    sscanf(s, "%x", &x);
    return(x);*/
    }

    Toroljetek a /*, */ jeleket a printfekrol es lathatova valik az egesz. Mindent megcserel kiveve ha 00 van az allomanyban. tehat pl 2A 42 42 2B mukodik de a 2A 42 00 2B mar nem (en ilyen parasztosan ellenorzok ugyanis a piros gombocokat nem ertem :DDD )

    Kozben rajottem hogy a 00 karakter egy DOS-ASCII szerint a NULL parancsnak felel meg (oh milyen szellemes, es oh milyen okos vagyok), nem pedig a 0 karakternek, es gondolom egy ilyen NULL parancsot nem tud stringbe pakolni... hm akkor mi a megoldás? Kuka az egész progirészlet ugye?

Új hozzászólás Aktív témák