PDA

Visualizza la versione completa : [C] Utilizzo della fscanf


sandrinolli
18-04-2010, 16:52
Salve volevo sapere se eseguendo queste due linee di codice,
memorizzo un valore presente nella seconda riga di un file che devo caricare.

int riga2 = 1;
FILE* inFile = fopen("tdm.dat","r");
#define M = fscanf(inFile,"%d",&riga2);

Vorrei che il valore presente nella seconda riga venisse memorizzato nella M. E' possibile ed
è corretto?
Il file che devo caricare, in questo caso tdm.dat, contiene dei numeri interi.

oregon
18-04-2010, 17:03
Assolutamente no ... cosa c'entra la define? Se devi programmare in C, dovresti studiare le basi del linguaggio da un qualsiasi libro, prima di scrivere codice ...

Se devi memorizzare dati nella variabile M (non ti consiglio di usare nomi maiuscoli per le variabili) la devi dichiarare ed usare all'interno della fscanf così

int M;
fscanf(inFile,"%d", &M);

Se devi leggere dalla seconda riga, leggi la prima a vuoto (ma non l'avevi già chiesto questo fatto ? E non avevi gia' avuto risposta ?)

sandrinolli
18-04-2010, 18:06
int M;
fscanf(inFile,"%d", &M);

Se facessi come mi hai consigliato, come potrei rendere visibile il valore di M al di fuori del metodo?

oregon
18-04-2010, 18:08
Metodo?

sandrinolli
18-04-2010, 18:10
Apro il file all'interno di un metodo e vorrei che il valore della M fosse visibile anche al di fuori del metodo. Vorrei che fosse visibile in tutta classe.

oregon
18-04-2010, 18:12
Metodo ... classe ... ma non stai programmando in C?

sandrinolli
18-04-2010, 18:20
Invece di fare queste precisazioni che pur essendo giuste le considero superflue
dato che sto chiedendo aiuto in un form e ciò inplica che non sono molto pratica del C, potresti rispondere a ciò che ho chiesto dato che è chiaro anche se non è preciso.
Se non ti va di aiutarmi non farlo però smettila di rispondere in questo modo.
Grazie

oregon
18-04-2010, 18:40
Originariamente inviato da sandrinolli
Invece di fare queste precisazioni che pur essendo giuste le considero superflue
dato che sto chiedendo aiuto in un form e ciò inplica che non sono molto pratica del C, potresti rispondere a ciò che ho chiesto dato che è chiaro anche se non è preciso.
Se non ti va di aiutarmi non farlo però smettila di rispondere in questo modo.
Grazie

Guarda che sei tu che chiedi aiuto e devi farlo in modo che si possa capire cosa stai facendo e cosa non riesci a fare.

Scrivere che si programma in C e mostrare che usi la funzione fscanf e poi parlare di classi e metodi senza che tu ne abbia mai fatto riferimento prima, esige chiarimenti da parte tua e non "rimproveri" a chi ti chiedi ulteriori precisazioni per capire.

Quindi, se ti fai capire e spieghi la situazione, mostri di che classe stai parlando e parli di C++, mostrandoti meno insofferente e un po' piu' educata, allora potrai avere risposte da me.

Altrimenti, auguri.

sandrinolli
18-04-2010, 18:47
Non mi sembra di essere stata maleducata e se cosi ti è sembrato ti chiedo anche scusa.
Ritengo sia giustissimo che colui che chiede aiuto debba spigarsi bene e debba fornire precisazioni a colui che è disposto a dargli una mano pero ci sono modi e modi anche nel chiedere chiarimenti.

MItaly
18-04-2010, 21:11
La richiesta di precisazioni era più giustificata, dato che, se si stesse parlando di una classe C++, la spiegazione cambierebbe molto. Comunque per rendere visibile la variabile a tutto il file (o a tutta "l'unità di compilazione", per essere puntigliosi), ti basta dichiararla al di fuori dello scope di qualunque funzione; in genere si usa mettere le variabili globali in testa al file, subito dopo gli include.


#include <stdio.h>

int VariabileGlobale;

void Quadrato(void);

int main(void)
{
printf("%s", "Inserisci un numero intero: ");
if(scanf("%d", &VariabileGlobale)!=1)
{
fputs("Valore non valido.\n",stderr);
return EXIT_FAILURE;
}
printf("VariabileGlobale impostata a %d", VariabileGlobale);
Quadrato();
return EXIT_SUCCESS;
}

void Quadrato(void)
{
printf("Il quadrato di %d è %d.\n", VariabileGlobale, VariabileGlobale*VariabileGlobale);
}

Tieni comunque conto che è considerata cattiva pratica di programmazione usare variabili globali quando non è necessario, spesso può essere più ragionevole passare alle altre funzioni i dati in questione come parametri.


#include <stdio.h>

void Quadrato(int Numero);

int main(void)
{
int numero;
printf("%s", "Inserisci un numero intero: ");
if(scanf("%d", &numero)!=1)
{
fputs("Valore non valido.\n",stderr);
return EXIT_FAILURE;
}
printf("numero impostata a %d", numero);
Quadrato(numero);
return EXIT_SUCCESS;
}

void Quadrato(int Numero)
{
printf("Il quadrato di %d è %d.\n", Numero, Numero*Numero);
}

Loading