Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] un aiutino per un programma

    Buona sera ragazzi, avrei bisogno di capire come mai questo semplice programma non mi funziona , allora spiego brevemente , io voglio prendere da un array presente nel main un tot di caratteri e metterli in un nuovo spazio per l'appunto appo, poi vorrei riaggiornare il valore a cui punta appo per vedere cosa stampa insomma per vedere se ha caricato correttamente quei 4 valori. Vi ringrazio in anticipo per ogni aiuto.
    codice:
    
    int main()
    {
        char prova[200];
        char *code[]= {"0","10","11000","11001","110100000",
                       "110100001","110100010","110100011",
                       "110100100","110100101","110100110",
                       "110100111","110101000","110101001",
                       "110101010","110101011","110101100",
                       "111","110101101","110101111","110110000",
                       "110110001","110110010","110110011",
                       "110110100","110110101"
                      };
        char bs[] = {"0101110110000110010101110"};
        decode(code,bs);
    }
    
    char *decode(char *code[], char *bs)
    {
        int i=4,j=0;
        char *punta,*appo;
        appo=punta;
        for (j=0; j<i; j++) //per caricare appo
        {
            appo= (char *)malloc(sizeof(char));
            *appo=*bs;
            bs++;
            appo++;
        }
        appo=punta;
        j=0;
    while(*(appo+j) != 0) {
            printf("%c",*(appo+j));
            ++j;
        }
    }

    mille grazie per ogni aiuto

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Da quel che vedo direi che non hai capito come funzionano i puntatori.
    codice:
    char *punta,*appo;
    appo=punta;
    punta e appo con quell'assegnamento puntano alla stessa spazzatura. Che senso ha?
    codice:
        for (j=0; j<i; j++) //per caricare appo
        {
            appo= (char *)malloc(sizeof(char));
            *appo=*bs;
            bs++;
            appo++;
        }
    Qui crei un char ad appo (tramite malloc), lo assegni e infine lo perdi. appo++ è un errore.
    codice:
    appo=punta;
    altro errore. Assegni al puntatore appo la spazzatura del puntatore punta.
    codice:
    while(*(appo+j) != 0) {
            printf("%c",*(appo+j));
            ++j;
        }
    e visto che appo contiene spazzatura, stamperai spazzatura.
    E infine non liberi la memoria.
    Quel che devi fare è creare lo spazio per appo *prima* del ciclo for, ed eventualmente usare punta per scansionare l'array. Ma non devi mai toccare appo. appo lo userai solo come segnaposto per malloc e free.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    ciao, questo intendevo , magari non hai capito quello che intendevo
    codice:
    char *decode(char *code[], char *bs)
    {
       int i=4,j=0;
       char *punta,*appo;
       appo= (char *)calloc(i+1,sizeof(char));
       punta = appo;
       for (j=0; j<i; j++) //per caricare appo
       {
          *appo=*bs;
          bs++;
          appo++;
       }
       appo=punta;
       j=0;
       while(*(appo+j) != 0) {
          printf("%c",*(appo+j));
          ++j;
       }
       return appo;
    }

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Tu avevi scritto questo:
    codice:
    char *decode(char *code[], char *bs)
    {
        int i=4,j=0;
        char *punta,*appo;
        appo=punta;
        for (j=0; j<i; j++) //per caricare appo
        {
            appo= (char *)malloc(sizeof(char));
            *appo=*bs;
            bs++;
            appo++;
        }
        appo=punta;
        j=0;
    while(*(appo+j) != 0) {
            printf("%c",*(appo+j));
            ++j;
        }
    }
    e questo io ho commentato.
    Se intendevi quello che hai scritto adesso, perché non l'hai scritto prima?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    è perche ora leggendo su un forum ho capito dove sbagliavo ^^ questo funziona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.