Oppure

Loading
04/07/13 8:28
Afa
#include <stdio.h>

#define MAXDIM 10

typedef struct{
	float elemento[MAXDIM];
	int n;
} lista;

void acquisisciNome(char* pnomeFile[20]);
void carica(lista* pl, char nomeFile[20]);

int main(){
	char nomeFile[20];
	lista l;
	acquisisciNome(&nomeFile);//**Warning**
	carica(&l, nomeFile);
	return 0;
}

void acquisisciNome(char* pnomeFile[20]){
	printf("Inserisci nome del file: ");
	scanf("%s",&(*pnomeFile));
	return;
}

void carica(lista* pl, char nomeFile[20]){
	int i;
	FILE* carica;
		carica = fopen(nomeFile, "r");
		for(i = 0; i < pl->n; i++){
			scanf(carica, "%f", pl->elemento[i]);//**Warning**
		}
	fclose(carica);
	return;
}


"Warning : Suspicious pointer conversion ..."

Mi da due warning in compilazione e non riesco a risolverli... Ho provato con un cast ma niente, sapreste indirizzarmi sul come modificare le due righe in questione?
Ultima modifica effettuata da Afa 04/07/13 8:29
aaa
04/07/13 8:41
ZioCrocifisso
Nella dichiarazione della funzione acquisisciNome (che causa il primo warning):
char *pnomeFile[20]
è un array di puntatori, non un puntatore a un array. Il tipo corretto è
char (*pnomeFile)[20]


Nel secondo warning:
pl->elemento[i]
è un float, perché -> dereferenzia, non un puntatore, va messo il & all'inizio
Ultima modifica effettuata da ZioCrocifisso 04/07/13 8:46
aaa
04/07/13 9:03
Afa
Per il primo warning hai ragione, ho corretto ed è ok

Per il secondo no, perchè so che nello scanf va la & ma in questo caso il passaggio e' per riferimento... ho provato comunque il tuo metodo e mi da addirittura un errore!
aaa
04/07/13 9:56
Afa
No ok risolto, ho scritto scanf invece di Fscanf
Si può chiudere :)
aaa
04/07/13 10:08
ZioCrocifisso
Il passaggio con -> non è per riferimento, perché -> dereferenzia, è come fare (*struttura).campo.
aaa
04/07/13 13:04
Afa
Ok ho capito ora a che ti riferisci, cmq ho risolto, il programma gira!
Grazie dell'aiuto!:k:
aaa