[C] problema con funzioni

di il
3 risposte

[C] problema con funzioni

Ragazzi ho un problema con queste funzioni in fase di compilazione
void inserire_matricola(int posizione_corrente){
     int pass=1;
     char *matricola_acquisita;                                                     
     matricola_acquisita = acquisire_matricola(pass);
     strcpy(lista_studenti[posizione_corrente].matricola, matricola_acquisita);
     
     return;
     }
     
char* acquisire_matricola(int variabile){
     
     char *matricola_provvisoria;
     
     do{
        printf("inserisci la matricola");
        scanf("%s",&matricola_provvisoria);
        if(controllo_formattazione_matricola(&matricola_provvisoria)==0){
           printf("La matricola puo' contenere solo numeri");
           }
        if(controllo_matricola(&matricola_provvisoria)==variabile){
           if(variabile==0){
              printf("La matricola non è presente");
              }
           else{
              printf("La matricola e' presente");
              }
        }
        
        }while(controllo_matricola(&matricola_provvisoria) == 1 || controllo_formattazione_matricola(&matricola_provvisoria)==0);
        
        return &matricola_provvisoria;
     
     }

int controllo_matricola(char matricola_cercata[6]){
    
    int risultato=0;
    int i =0;
 
    while(i<studenti_presenti){
          if(strcmp(matricola_cercata , lista_studenti[i].matricola)){
             risultato=1;
             i=studenti_presenti;
             }
          else{
               i++;
               }
    }
    return risultato;
   
}

int controllo_formattazione_matricola (char *stringa_numerica){
    int risultato;
    int i;
    
    risultato=1;
    i=0;
    
    while (*stringa_numerica+i != '\0' && risultato==1) {
          if (*stringa_numerica+i < '0' || *stringa_numerica+i > '9'){
                                  risultato=0;
                                  }
          i=i+1;
          }
          
    return risultato;
}
questi sono i prototipi delle funzioni
void inserire_matricola(int posizione_corrente);
char* acquisire_matricola(int variabile);
int controllo_matricola(char *matricola_cercata);
int controllo_formattazione_matricola(char *stringa_numerica);
questo è invece il log del compilatore
Compilatore: TDM-GCC 4.7.1 64-bit Release
Building Makefile "G:\4_codice_libreria_studenti\Makefile.win"
Esecuzione di  make...
mingw32-make.exe -f "G:\4_codice_libreria_studenti\Makefile.win" all
gcc.exe -c funzioni.c -o funzioni.o -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" 

funzioni.c: In function 'acquisire_matricola':

funzioni.c:32:9: warning: passing argument 1 of 'controllo_formattazione_matricola' from incompatible pointer type [enabled by default]
In file included from funzioni.c:1:0:
variabili_globali.h:33:5: note: expected 'char *' but argument is of type 'char **'
funzioni.c:35:9: warning: passing argument 1 of 'controllo_matricola' from incompatible pointer type [enabled by default]
In file included from funzioni.c:1:0:
variabili_globali.h:32:5: note: expected 'char *' but argument is of type 'char **'
funzioni.c:44:9: warning: passing argument 1 of 'controllo_matricola' from incompatible pointer type [enabled by default]
In file included from funzioni.c:1:0:
variabili_globali.h:32:5: note: expected 'char *' but argument is of type 'char **'
funzioni.c:44:9: warning: passing argument 1 of 'controllo_formattazione_matricola' from incompatible pointer type [enabled by default]
In file included from funzioni.c:1:0:
variabili_globali.h:33:5: note: expected 'char *' but argument is of type 'char **'
Oltre ad errori di tipo loop o qualcosa scritta in maniera non convenzionale, dove cavolo stanno questi errori o possibili errori nascosti?? non riesco a capire
Se avete bisogno di qualche commento sul codice chiedete pure

3 Risposte

  • Re: [C] problema con funzioni

    Matricola_provvisoria é un puntatore che non punta a niente!
    Per passarlo ad una funzione che accetta un char* non devi passargli un indirizzp con & altrimenti diventa ** dal cel non riesco a far di meglio.
  • Re: [C] problema con funzioni

    Grazie mille, a notarlo mi sono accorto dell'errore, mi sono confuso con un escamotage che ci disse il prof per alcuni "passaggi".
    Grazie mille
  • Re: [C] problema con funzioni

    Ti posso dare un consiglio?
    Scaricati CODE::BLOCK con il pacchetto MinGW,usalo una settimana poi capirai da solo il perchè
Devi accedere o registrarti per scrivere nel forum
3 risposte