|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2007
Città: Monopoli(BA)
Messaggi: 218
|
[C] problema con funzioni
Ragazzi ho un problema con queste funzioni
Codice:
void inserire_matricola(int posizione_corrente){
int pass=1;
char *matricola_acquisita; /* da chiedere al prof*/
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;
}
Codice:
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 è il log Codice:
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 **' Se avete bisogno di qualche commento sul codice chiedete pure
__________________
NOSTRAVIS PRO CLASSEM - GrupAer - |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
una funzione non può restituire l'indirizzo o il valore di una stringa (char *) se questa viene allocata staticamente all'interno di suddetta funzione.
le soluzioni sono 2: 1) nel chiamante crei un array di char abbastanza grande da contenere la matricola e lo passi come parametro alla funzione che lo riempirà. 2) usi l'allocazione dinamica della memoria (malloc)
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2013
Città: Nel cuore dell'8 Mile di Detroit
Messaggi: 3984
|
per guardare la compilazione mancano dei pezzi , il .h delle globali si puo' solo intuire
cmq non puoi fare: Codice:
return &matricola_provvisoria; Codice:
return matricola_provvisoria |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:14.



















