*MATRIX*
12-11-2005, 10:34
ciao raga avrei bisogno di un aiutino
ho un file nomi.txt con su scritto dei nomi e cognomi
es
Rossi mario
Bianchi Luca
verdi Antonio
devo scrivere in un altro file nomi2.txt perņ ordinato per cognome
Bianchi Luca
Rossi Mario
Verdi Antonio
devo usare puntatori record ed allocazione dinamica
#define dim 10
#include <stdlib.h>
#include <stdio.h>
#define n 3
typedef struct {
char cognome[30],nome[30]
} persona;
main()
{ persona *dato;
persona *p;
p=(persona*) malloc(n*sizeof(persona));
int k=0;
int x=1;
FILE* lettura;
FILE* scrittura;
scrivi=fopen("nomi2.txt","wt");
if ((leggi=fopen("nomi.txt","r"))==NULL)
{
printf("ERROR");
}
//ordinamento
while (fscanf(leggi,"%s%s\n", p[k].cognome,p[k].nome)!=EOF)
{
while (fscanf(leggi,"%s%s\n", p[x].cognome,p[x].nome)!=EOF)
{
if (p[x].cognome>p[k].cognome)
{
*dato=p[x];
p[x]=p[k];
p[k]=*dato;
}
else
{
x++;
}
k++;
}
}
/*stampa*/
k=0;
while (fscanf(lettura,"%s%s\n", p[k].cognome,p[k].nome)!=EOF)
{
fprintf(scrivi,"%s %s \n",p[k].cognome,p[k].nome);
k++;
}
fclose(scrivi);
fclose(leggi);
system("pause");
}
il problema e che non scrive niente sul file in output
se elimino la procedura di scambio mi sembra scrive
vi ringrazio per l'aiuto
ho un file nomi.txt con su scritto dei nomi e cognomi
es
Rossi mario
Bianchi Luca
verdi Antonio
devo scrivere in un altro file nomi2.txt perņ ordinato per cognome
Bianchi Luca
Rossi Mario
Verdi Antonio
devo usare puntatori record ed allocazione dinamica
#define dim 10
#include <stdlib.h>
#include <stdio.h>
#define n 3
typedef struct {
char cognome[30],nome[30]
} persona;
main()
{ persona *dato;
persona *p;
p=(persona*) malloc(n*sizeof(persona));
int k=0;
int x=1;
FILE* lettura;
FILE* scrittura;
scrivi=fopen("nomi2.txt","wt");
if ((leggi=fopen("nomi.txt","r"))==NULL)
{
printf("ERROR");
}
//ordinamento
while (fscanf(leggi,"%s%s\n", p[k].cognome,p[k].nome)!=EOF)
{
while (fscanf(leggi,"%s%s\n", p[x].cognome,p[x].nome)!=EOF)
{
if (p[x].cognome>p[k].cognome)
{
*dato=p[x];
p[x]=p[k];
p[k]=*dato;
}
else
{
x++;
}
k++;
}
}
/*stampa*/
k=0;
while (fscanf(lettura,"%s%s\n", p[k].cognome,p[k].nome)!=EOF)
{
fprintf(scrivi,"%s %s \n",p[k].cognome,p[k].nome);
k++;
}
fclose(scrivi);
fclose(leggi);
system("pause");
}
il problema e che non scrive niente sul file in output
se elimino la procedura di scambio mi sembra scrive
vi ringrazio per l'aiuto