matteo.pata
26-09-2010, 11:08
Ciao ragazzi ho dei problemi con le stringhe e i puntatori:
allora ho una funzione:
char* skyline (listaGrattacielo *p,int n){
float spiaggia[n]; /*creo un array della dimensione della spiaggia*/
FILE *fpunt;
int temp;
int i,j;
char t[300];
if((fpunt = fopen("prova_progetto.txt","a+"))==NULL)
printf("errore nell'apertura del file\n");
else{
for(i=0;i<=n;i++)
{
spiaggia[i]=0; /*inizializzo l'array a 0*/
}
while(p != NULL)
{
for(j = p->pos_iniziale ; j < p->pos_finale ; j++){
if(p->altezza >= spiaggia[j]){ /*controllo le posizioni dell'array con l'altezza di ogni grattacielo */
spiaggia[j]=p->altezza; /*se maggiore assegno altrimenti continuo*/
}
}
p=p->next;
}
for(j=0;j<n;j++){
temp = spiaggia[j];
fprintf(fpunt,"%d",temp);
sprintf(t,"%d",temp);
printf("%s",t);
}
fprintf(fpunt,"\n");
}
return t;
fclose(fpunt);
}
Questa funzione mi ritorna un puntatore a una stringa.
Adesso come faccio ad assegnare questa stringa a una variabile globale per poi poterla passare a un'altra funzione che la elabora fa dei confronti.
ho provato con strcpy ma niente. nella funzione in cui devo passare la stringa come parametro arriva sempre con dentro niente e non capisco il perchè.
Nel main assegno il puntatore che ritorna alla variabile globale che è anche lei un puntatore a char quindi in teoria dovrebbe prenderla così come è.
una volta passato il puntatore all'interno della mia funzione dovrei avere la stringa uguale invece niente la stringa è vuota mi restituisce 0.
Grazie per l'aiuto.
allora ho una funzione:
char* skyline (listaGrattacielo *p,int n){
float spiaggia[n]; /*creo un array della dimensione della spiaggia*/
FILE *fpunt;
int temp;
int i,j;
char t[300];
if((fpunt = fopen("prova_progetto.txt","a+"))==NULL)
printf("errore nell'apertura del file\n");
else{
for(i=0;i<=n;i++)
{
spiaggia[i]=0; /*inizializzo l'array a 0*/
}
while(p != NULL)
{
for(j = p->pos_iniziale ; j < p->pos_finale ; j++){
if(p->altezza >= spiaggia[j]){ /*controllo le posizioni dell'array con l'altezza di ogni grattacielo */
spiaggia[j]=p->altezza; /*se maggiore assegno altrimenti continuo*/
}
}
p=p->next;
}
for(j=0;j<n;j++){
temp = spiaggia[j];
fprintf(fpunt,"%d",temp);
sprintf(t,"%d",temp);
printf("%s",t);
}
fprintf(fpunt,"\n");
}
return t;
fclose(fpunt);
}
Questa funzione mi ritorna un puntatore a una stringa.
Adesso come faccio ad assegnare questa stringa a una variabile globale per poi poterla passare a un'altra funzione che la elabora fa dei confronti.
ho provato con strcpy ma niente. nella funzione in cui devo passare la stringa come parametro arriva sempre con dentro niente e non capisco il perchè.
Nel main assegno il puntatore che ritorna alla variabile globale che è anche lei un puntatore a char quindi in teoria dovrebbe prenderla così come è.
una volta passato il puntatore all'interno della mia funzione dovrei avere la stringa uguale invece niente la stringa è vuota mi restituisce 0.
Grazie per l'aiuto.