Ho un problema con le liste....vi posto il codice...
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct nodo{
char cognome[20];
char nome[20];
char telefono[20];
struct nodo *succ;
}agenda;
int main()
{
agenda *k, *pun;
FILE *rubrica;
int count = 0;
if ((rubrica = fopen("agenda.txt", "r")) == NULL)
//rubrica = fopen("agenda.txt","r")
//if (rubrica == NULL)
{
printf("Il File che stai cercando di aprire non esiste\n");
}
else
{
k = (agenda *)malloc(sizeof(agenda));
if(k==NULL)
{
printf("Memoria esaurita\n");
}
else
{
fscanf(rubrica,"%s",k->cognome);
fscanf(rubrica,"%s",k->nome);
fscanf(rubrica,"%s",k->telefono);
pun = k;
count++;
while(!feof(rubrica))
{
pun->succ = (agenda *)malloc(sizeof(agenda));
pun = pun->succ ;
fscanf(rubrica,"%s",pun->cognome);
fscanf(rubrica,"%s",pun->nome);
fscanf(rubrica,"%s",pun->telefono);
count++;
//printf("Nome: %s\t Cognome: %s\t Telefono: %s\t\n",k->nome,k->cognome,k->telefono);
}
pun->succ = NULL;
printf("Numero di record trovati: %d\n",count);
pun = k;
int i;
char vettore;
//vettore=(char *)malloc(sizeof((char *20) * count);
/*do*/for(i=1;i<=count;i++)
{
printf("\nNome: %s\t Cognome: %s\t Telefono: %s\t",pun->nome,pun->cognome,pun->telefono);
pun=pun->succ;
}//while(pun->succ != NULL);
}
}
fclose(rubrica);
printf("\n");
system("PAUSE");
return 0;
}
Secondo voi....come mai se uso il for mi stampa tutte le righe del file altrimenti me ne stampa tutte meno l'ultima???? (il for lo uso perchè ho contato quanto ne ho lette)
Seconda domanda....dovessi io salvare in un vettore i cognomi per poterne fare una ricerca tipo dicotomica come dovrei fare?
Nel senso come faccio a fare una variaible che sia un vettore di stringhe????
Forse posso creare una struct con solo il campo cognome e farne un vettore di struct???? non so...è un'idea sbagliata forse....help...
grazie per l'aiuto....