Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160

    [C] Problemi di compilazione

    Ciao a tutti

    Sto compilando un mio programma e in fase di compilazione dà i seguenti errori:

    codice:
    warning: incompatible implicit declaration of built-in function ‘malloc'
    relativo all'istruzione: header *h=(header *)malloc(sizeof(header));
    codice:
    error: invalid type argument of ‘->’
    una serie di errori di questo tipo. Avendo una struttura definita in questo modo 
    
    typedef struct{
       char name[DBF_NAME_LENGTH+1];
       short NumCampi;
       long NumRecords;
       short dimHeader;
       short dimRecord;
       long timestamp;
       campi campo[MAX_NUM_FIELDS];
    }header;
    
    ho fatto varie assegnazioni del tipo
    h->campo[i]->fieldtype=(uint16_t) htons(h->campo[i]->fieldtype);
    codice:
    warning: passing argument 1 of ‘strcat’ makes pointer from integer without a cast 
    relativo all'istruzione strcat(Name[strlen(Name)-4],DBF_EXTENSION);
    Che posso fare?

  2. #2
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Per il primo problema penso che basti aggiungere un'istruzione in testa al programma:

    codice:
    #include <stdlib.h>
    vale a dire l'header della malloc.

    Per il secondo problema devi sapere che tu con questa istruzione

    codice:
    Name[strlen(Name)-4]
    hai passato un carattere alla funzione strcat, mentre volevi passare l'indirizzo di quel carattere all'interno della stringa.
    Per risolvere il problema basta che usi l'operatore trova-indirizzo &, l'istruzione corretta è

    codice:
    strcat(&Name[strlen(Name)-4],DBF_EXTENSION);
    Dimenticavo, la strcat concatena solo stringhe, quindi non funzionerà se DBF_EXTENSION è un carattere.
    In questo caso devi creare una stringa che contiene solo quel carattere e passarglielo

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    Ok grazie. Per l'ultimo problema alla fine ho risolto usando semplicemente la funzione rename (dovevo rinominare il file che stavo usando). Per quanto riguarda la malloc hai ragione mi sono dimenticato di includere la stdlib

    Per quanto riguarda invece la seconda (che è quella delle strutture) non so proprio che fare

  4. #4
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Mi è sfuggito il secondo problema, sorry

    questo non va bene

    codice:
    h->campo[i]->fieldtype= ...
    perché all'interno della tua struttura campo non è dichiarato come puntatore.

    Devi scrivere così

    codice:
    h->campo[i].fieldtype=...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    Ok grazie. Ora và tranne che per questo

    codice:
    incompatible types in assignment
    relativo a questa istruzione: h->campo[i].name=strcpy(h->campo[i].name,FieldData->Name);

  6. #6
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    codice:
    h->campo[i].name
    è una stringa e non un puntatore, quindi non puoi assegnargli direttamente il valore di un'altra stringa.
    In ogni caso questa istruzione è sufficiente a fare il lavoro che ti serve
    codice:
    strcpy(h->campo[i].name,FieldData->Name);
    prova a guardare il contenuto di h->campo[i].name dopo aver eseguito la strcpy.
    Ti raccomando un manuale di C:

    C Corso Completo di Programmazione, autori: Deitel padre e Deitel figlio, edito da Apogeo.

    Secondo me stai facendo un lavoro troppo complicato per un che non conosce tanto bene i puntatori :-)
    ciao!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    No no li conosco. Ormai il mio libro me lo sarà riletto 5-6 volte.

    Infatti poi alla soluzione che mi hai dato tu ci sono arrivato da solo

    Il fatto è che ho scritto talmente tante righe di codice che sono sfinito

    Cmq grazie mille dell'aiuto.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.