Buona sera, per esercizio scolastico devo creare un programma che, Legge da un file un nome e un numero e me li scrive in un altro file, se trova due nomi uguali deve sommare il numero del nome che c'è già con quello che trova. Sono quasi alla fine ma non riesco proprio a passare il vettore di strutture alla funzione, ho provato in tutti i modi ma non ne vuole sapere.
Pensavo di passargli il vettore di strutture con un & davanti e quindi nella funzione * come faccio sempre quando devo passare un dato che mi deve modificare.. Vi posto il file sorgente sperando capiate il mio ragionamento.. Scusate ma sono ancora alle prime armi :/.. Potreste dirmi cosa c'è che non va :/?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define dmax 50
#define dname 20
typedef struct Locca {
char nome[dname];
int valore;
}nv_t;
void presente(char nometemp[dname], int valoretemp, nv_t *vettore[dmax],int *index){
int i;
for(i=0;i<=dmax;i++){
if (0 == strcmp(nometemp,vettore.nome)){
vettore.valore=valoretemp;
break;
}
if(i==index){
strcpy(vettore.nome,nometemp);
vettore.valore = valoretemp;
index++;
break;
}
}
}
int main(int argc, char *argv[])
{
FILE *data;
data = fopen("file.txt","r");
nv_t vettore[dmax];
int i = 0;
char nometemp[dname];
int valoretemp;
int index=0;
// inizializzo il vettore dove metterò quello che tiro su dal file
for(i=0;i<=dmax;i++){
strcpy(vettore.nome,"0");
vettore.valore=0;
}
// se ho trovato il file prendo il nome e il valore e li passo alla function presente
if (data!=NULL){
while(1){
if(feof(data)) break;
fscanf(data,"%s %d",&nometemp,&valoretemp);
presente(nometemp,valoretemp,&vettore[dmax],&index);
i++;
}
}
else {printf("\nErrore, file non trovato \n" );} // se non trovo file do errore
// stampo il vettore finale
for(i=0;i<=dmax;i++){
printf("\n %s %d",vettore.nome,vettore.valore);
}
system("PAUSE");
return 0;
}
Pensavo di passargli il vettore di strutture con un & davanti e quindi nella funzione * come faccio sempre quando devo passare un dato che mi deve modificare.. Vi posto il file sorgente sperando capiate il mio ragionamento.. Scusate ma sono ancora alle prime armi :/.. Potreste dirmi cosa c'è che non va :/?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define dmax 50
#define dname 20
typedef struct Locca {
char nome[dname];
int valore;
}nv_t;
void presente(char nometemp[dname], int valoretemp, nv_t *vettore[dmax],int *index){
int i;
for(i=0;i<=dmax;i++){
if (0 == strcmp(nometemp,vettore.nome)){
vettore.valore=valoretemp;
break;
}
if(i==index){
strcpy(vettore.nome,nometemp);
vettore.valore = valoretemp;
index++;
break;
}
}
}
int main(int argc, char *argv[])
{
FILE *data;
data = fopen("file.txt","r");
nv_t vettore[dmax];
int i = 0;
char nometemp[dname];
int valoretemp;
int index=0;
// inizializzo il vettore dove metterò quello che tiro su dal file
for(i=0;i<=dmax;i++){
strcpy(vettore.nome,"0");
vettore.valore=0;
}
// se ho trovato il file prendo il nome e il valore e li passo alla function presente
if (data!=NULL){
while(1){
if(feof(data)) break;
fscanf(data,"%s %d",&nometemp,&valoretemp);
presente(nometemp,valoretemp,&vettore[dmax],&index);
i++;
}
}
else {printf("\nErrore, file non trovato \n" );} // se non trovo file do errore
// stampo il vettore finale
for(i=0;i<=dmax;i++){
printf("\n %s %d",vettore.nome,vettore.valore);
}
system("PAUSE");
return 0;
}