+ Rispondi
Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    blisca
    Guest

    IAR,ARM,confusione su array di stringhe e puntatori

    Ciao

    credo che mi stia confondendo grossolanamente...dove sbaglio???

    quale può essere il motivo per cui una assegnazione di stringhe ad elementi
    di un array di *char mi modificaanche il valore delle precedenti
    assegnazioni,nonostante l'indice punti correttamente al nuovo elemento da
    aggiornare?
    La cosa strana è che vengono modificati,3,4,8 valori in un colpo solo,come
    se venissero puntati n arrays di char alla volta

    ad ogni array di puntatori a char è stato precedentemente fatto
    corrispondere un array di caratteri
    Questo mi è sembrato il modo meno dispendioso di operazioni per il
    micro,spero di non avere sbagliato proprio qui
    riassumo:

    char mydir_string[32][16];//alloco spazio per 16 stringhe da 32 bytes
    char* myDirStr[16];//dichiaro 16 puntatori a char
    //*******************************
    main
    {
    unsigned char i,mypindex;

    //associo puntatore a char ad array di char
    for(i=0;i<16;i++){ myDirStr[i]= mydir_string[i]; }

    mypindex=0;

    //chiamo la funzione 8 volte,modificherà un char* fname
    for(i=0;i<8;i++)
    {
    miafunzione( );// mi aggiorna il valore fname che è un char*
    myDirStr[mypindex++]= fname;//ogni volta che esegue
    //l'assegnazione mi cambia anche il valore delle assegn.
    precedentemente fatte
    }
    }


    al primo loop mi trovo
    myDirStr[0]="cane";//OK
    myDirStr[1]="";
    myDirStr[2]="";
    .....
    al 2° loop mi trovo
    myDirStr[0]="gatto";//<<errore!!doveva rimanere "cane"
    myDirStr[1]="gatto";
    myDirStr[2]="";
    .....
    al 3° loop mi trovo
    myDirStr[0]="topo";";//<<errore!!doveva rimanere "cane"
    myDirStr[1]="topo";";//<<errore!!doveva rimanere "gatto"
    myDirStr[2]="topo";


    dov'è l'errore???grazie




  2. #2
    blisca
    Guest

    Re: IAR,ARM,confusione su array di stringhe e puntatori

    Gentili signori non perdete tempo,era solo una banalissima assegnazione di
    stringa che in C non si fa,lo sanno anche i ragazzini di 14 anni...

    tipo char blisca[40];

    blisca="sei una bestia";//<<<illegale

    > myDirStr[mypindex++]= fname;//


    nel debugger vedevo un valore che era il puntatore stesso,e non il
    contenuto di ciò che era puntato

    scusassero



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi