|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 84
|
[C] problema main
Salve a tutti, ho un problema, ho una funzione main funzionante però ci sono troppi return, e io ne vorrei solo uno finale come posso fare?Grazie
La main è questa: Codice:
int main(void)
{
char *szNomeFileIn = "Studenti.txt";
char *szNomeFileOut = "StudentiOut.txt";
int c;
int NumRecords;
Studenti *pStud, *pStudTemp;
NumRecords = OttieniNumRecordsDaFileTesto(szNomeFileIn);
if ( NumRecords <= 0 )
{
printf("Il file %s non contiene records.", szNomeFileIn);
return -1;
}
pStud = malloc(NumRecords * sizeof(Studenti));
if(!pStud)
{
printf("Memoria insufficiente.\n");
return -1;
}
pStudTemp = malloc(NumRecords * sizeof(Studenti));
if(!pStudTemp)
{
printf("Memoria insufficiente.\n");
return -1;
}
if ( !LeggiRecords(szNomeFileIn, pStud) )
{
printf("Errore nella lettura dei records.\n");
return -1;
}
while ( 1 )
{
printf("\n\nInserisci una delle seguenti lettere:\n");
printf("C -> ordina per Cognome\n");
printf("M -> ordina per Matricola\n");
printf("V -> ordina per Voto\n");
printf("Una qualunque altra lettera per uscire.\n");
printf("Scelta: ");
fflush(stdin);
c = getchar();
mergesort(pStud, pStudTemp, 0, NumRecords-1, c);
if ( !ScriviRecords(szNomeFileOut, pStud, NumRecords) )
{
printf("Errore nella scrittura dei records.\n");
return -1;
}
else
{
switch ( c )
{
case 'c':
case 'C':
printf("I records, ordinati per cognome, sono stati scritti nel file %s\n", szNomeFileOut);
break;
case 'm':
case 'M':
printf("I records, ordinati per matricola, sono stati scritti nel file %s\n", szNomeFileOut);
break;
case 'v':
case 'V':
printf("I records, ordinati per voto, sono stati scritti nel file %s\n", szNomeFileOut);
break;
default:
return 0;
}
}
}
if ( pStud )
free(pStud);
if ( pStudTemp )
free(pStudTemp);
return 0;
}
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Aug 2007
Messaggi: 50
|
se vuoi solo il return finale, al posto dei vari
Codice:
return -1; Codice:
exit(1); |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 84
|
ma è uguale???
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 181
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 84
|
A OK GRAZIE!!
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ma perché, i return fanno schifo?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
infatti,casomai ci vorrebbe un refactoring,ma sostituire return con exit non ha molto senso
__________________
Khelidan |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 84
|
si ma il mio professore non vuole vedere più di una main per funzione....come posso fare?
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
|
Quote:
Il modo migliore sarebbe avere una "variabile di stato" creata a inizio funzione e settata a 0. In caso di errore, il suo valore è modificato e viene comunque ritornata dal return finale. Ovviamente questo potrebbe richiedere una piccola riscrittura del codice: talvolta si disseminano cicli e strutture condizionali di break e return per togliersi dall'imbarazzo di condizioni di uscita non semplici.
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. --Gerald Weinberg |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:58.




















