PDA

Visualizza la versione completa : stringa in c


matis25
01-01-2003, 17:08
io ho le seguenti stringhe in un file chiamato agenda.txt
pippo rossi 123456789
andrea bianchi 33336999
franco zappa 456789
Vorrei visualizzarli sul mio schermo in ordine alfabetico mi dite come faccio? con la funzione strcmp lo so ma non riesco ad adattarla al mio problema se potete farmi un piccolo esempio pratico..io leggo il file agenda.txt in questo modo :


if ( (fp = fopen("agenda.txt" , "r" )) == NULL)
{
printf("\nErrore apertura file");
exit(1);
}


while ( !feof(fp) )
{
fgets(rubrica, sizeof(rubrica), fp);
printf("%s" , informazioniutenti);
}
fclose(fp);

$$$
01-01-2003, 17:46
nel file agenda ci saranno SEMPRE e SOLO 3 linee o sono variabili?

Molok
01-01-2003, 21:44
Se il file contiene sempre 3 parole per riga potresti leggere le parole con fp >> nome e poi salta il cognome e il numero oppure fai un ciclo che legge col get e che si ferma alla fine del nome. questo sempre se ti basta solo il nome per ordinarlo. se ti serve anche il cognome ti suggerisco di inserire gli elementi nel file in maniera diversa tipo uno per riga:

- Nome1
- Cognome1
- Numero1
- Nome2
- Cognome2
.......
Questo per aggevolare la lettura che a questo punto potresti fare col getline in qusto modo eviti anche il problema dei cognomi tipo De nardi Del piero
Scegli tu l'opzione che preferisci secondo me l'ultima e la migliore

Invece per ordinare protresti usare una struct per salvare temporaneamente gli elementi della rubrica e per ordinarlo dovresti annidare due cicli il primo che legge gli elementi dal file e il secondo che li inserisce all'interno della struct facendo dei confronti(con lo strcmp o con una funzione equivalente magari fatta da te) e shiftando gli elementi all'interno della struct o se non vuoi shiftarli usa un campo in piu che userai come indice alla fine visualizzi la struct

spero di averti aiutato :fagiano: :fagiano:

Loading