Comunque tornando al problema..non so perchè ma alcuni elementi non mi si aggiungono all'intern della lista (mentre altri che dovrebbero stare in prima e in ultima posizione non ci stanno).
Questo è il codice
codice:
#include <iostream>
#include <fstream>
#include <string.h>
#include <malloc.h>
using namespace std;
struct nome {
char *p;
nome* succ;
};
typedef nome Tnome;
Tnome* CreaLista();
void Inizializza(char array[],int dim);
void Inserisci(Tnome* &lista,char buffer[]);
void StampaLista(Tnome* lista);
void OrdinaLista(Tnome* &lista);
void Scambia(char* str1[],char* str2[]);
int main()
{
int prova=0;
char buffer[100];
char c;
int contavirgolette = 0;
int k=0;
Tnome *nomipropri;
ifstream testo;
testo.open("prova.txt",ios::in);
nomipropri = CreaLista();
while(!testo.eof())
{
while(contavirgolette<2)
{
c = testo.get();
if (c!='"')
buffer[k++] = c;
else contavirgolette++;
}
buffer[k]=0;
k = 0;
prova++;
contavirgolette = 0;
Inserisci(nomipropri,buffer);
Inizializza(buffer,100);
c = testo.get();
}
testo.close();
StampaLista(nomipropri);
}
Tnome* CreaLista()
{
return NULL;
}
void Inserisci(Tnome* &lista,char buffer[])
{
int i;
Tnome *supporto;
supporto = (Tnome*) calloc(1,sizeof(Tnome));
supporto->succ=lista;
supporto->p = (char*)calloc(strlen(buffer)+1,sizeof(char));
for(i=0;buffer[i]!='\0';i++)
supporto->p[i] = buffer[i];
supporto->p[i] = 0;
lista=supporto;
}
void Inizializza(char array[],int dim)
{
int i;
for(i=0;i<dim;i++)
array[i]=0;
}
void StampaLista(Tnome* lista)
{
while(lista!=NULL)
{
cout << lista->p << endl;
lista = lista->succ;
}
}
Mentre il file di testo è strutturato in questa maniera:
codice:
"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","..."
"EDITH","KIM","SHERRY","SYLVIA","JOSEPHINE","THELMA","SHANNON","...",
"...",
"...",
etc...