PDA

Visualizza la versione completa : AIuto con un problema di funzioni [IN C]


Steve127
04-01-2013, 14:28
Salve ho un problema,forse banale, da risolvere.
il mio problema mi chiede di inserire in un file una lista di treni (treno gią definito precedentemente con una struct), una volta inseriti i dati del mio treno, vorrei controllare che il suo numero identificativo sia univoco. come faccio a comparare (usando magari lo strcmpr?) il dato del mio treno, con gli elementi del file?

Vi inserisco la prima parte del codice in C


int aggTren()
{ treno t1;
fp =fopen(TFILE,"ab");
if (!fp) {
printf ("Il file richiesto non esiste %s\n", TFILE); /*per precauzaione*/

return 1;
}
/*inserimento di un nuovo treno*/
printf("Numero Identificativo:\n ");
scanf("%d", &t1.numero_identificativo);
printf("Cittą di partenza:\n");
scanf("%c", &t1.citta_partenza);
printf("Cittą di arrivo:\n");
scanf("%c", &t1.citta_arrivo);
printf("Ora di partenza:\n");
scanf("%c", &t1.partenza.ora);
printf("Minuti di partenza:\n");
scanf("%c", &t1.partenza.minuti);
printf("Ora di arrivo:\n");
scanf("%c", &t1.arrivo.ora);
printf("Minuti di arrivo:\n");
scanf("%c", &t1.arrivo.minuti);

/*scrivo dati su file*/

if(fwrite(&t1,sizeof(t1), 1, fp)>0)
printf("Dati scritti con successo\n");
else
printf("Errore nella scrittura dei dati sul file\n") ;
fclose(fp);
return 0;

Alex'87
04-01-2013, 15:00
Originariamente inviato da Steve127
come faccio a comparare (usando magari lo strcmpr?) il dato del mio treno, con gli elementi del file?


Non capisco il problema :confused: Ti basta leggere il file (dal codice che hai postato lo apri come file binario quindi puoi usare fread) e confrontare quello che stai per inserire con tutti gli elementi gią presenti nel file...)

Steve127
04-01-2013, 15:33
Originariamente inviato da Alex'87
Non capisco il problema :confused: Ti basta leggere il file (dal codice che hai postato lo apri come file binario quindi puoi usare fread) e confrontare quello che stai per inserire con tutti gli elementi gią presenti nel file...)

ma una volta letto il file (con fread) come faccio a confrontare il dato inserito con tutti gli elementi del file?

Alex'87
04-01-2013, 17:59
Originariamente inviato da Steve127
ma una volta letto il file (con fread) come faccio a confrontare il dato inserito con tutti gli elementi del file? Immagino che man mano che leggi con fread ti salvi i dati in una lista di treni, no? Basta che scorri questa lista quindi... Oppure leggi e confronti un elemento alla volta...

Steve127
05-01-2013, 12:09
ma cosa significa "passing arg1 of 'strcmp' makes pointer from integer without a cast"? ho quattro di questi errori (per esempio qui: if (strcmp(cercNum[10],tren.num_ident[10])==0) ) e non riesco a trovare una soluzione.

MdE2005
05-01-2013, 12:13
Originariamente inviato da Steve127
ma cosa significa "passing arg1 of 'strcmp' makes pointer from integer without a cast"? ho quattro di questi errori (per esempio qui: if (strcmp(cercNum[10],tren.num_ident[10])==0) ) e non riesco a trovare una soluzione.

Mai usato Google (http://www.google.it)? Mai sentito parlare di cast tra gli operatori di una funzione? Gli argomenti della funzione in questione richiedono un tipo di dati ben preciso..non credi?

fcapolin
08-01-2013, 09:55
Originariamente inviato da Alex'87
Non capisco il problema :confused: Ti basta leggere il file (dal codice che hai postato lo apri come file binario quindi puoi usare fread) e confrontare quello che stai per inserire con tutti gli elementi gią presenti nel file...)

Mi unisco

Loading