C: lettura da file di alcune macroistruzioni! AIUTO
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- Visitatori
-
18 Anni 11 Mesi fa #34636
da COM_EASYSOCIAL_GUEST_NAME
C: lettura da file di alcune macroistruzioni! AIUTO è stato creato da COM_EASYSOCIAL_GUEST_NAME
devo realizzare un programma per il progetto di lab. in cui un MAIN acceda a diversi file in formato .txt(a seconda di ciò che voglia eseguire) e legga alcune "macroistruzioni" (ignoro cosa siano).
in pratica con la funzione fopen() apro il file ma poi come faccio ad eseguire le istruzioni? e come devo scriverle le istruzioni nel file .txt?
vi prego aiutatemi altrimenti sono nella m***a fino al collo.
Grazie
in pratica con la funzione fopen() apro il file ma poi come faccio ad eseguire le istruzioni? e come devo scriverle le istruzioni nel file .txt?
vi prego aiutatemi altrimenti sono nella m***a fino al collo.
Grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 11 Mesi fa #34648
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic C: lettura da file di alcune macroistruzioni! AIUTO
Se, come penso, sul file le macroistruzioni sono distribuite su più righe, una volta aperto il file devi usare le
char *fgets(string[] nome_riga, int MAX, FILE *sorgente)
in un ciclo while che termina quando il file sorgente è terminato (la fgets ritorna NULL)
ovviamente, se devi lavorare con ogni riga e leggere parte di essa, devi invocare la sscanf(string[] nome_riga, ...) dove i puntini di sospensione stanno al posto dei tipi dei paramentri che devi leggere (%s stringhe, %d interi) seguiti dai nomi che dai loro..
Per la scritturadevi usare la fprintf(FILE *destinatario, char *formato, paramentri)
dove il formato è di nuovo %d, %s ecc
In bocca al lupo!
char *fgets(string[] nome_riga, int MAX, FILE *sorgente)
in un ciclo while che termina quando il file sorgente è terminato (la fgets ritorna NULL)
ovviamente, se devi lavorare con ogni riga e leggere parte di essa, devi invocare la sscanf(string[] nome_riga, ...) dove i puntini di sospensione stanno al posto dei tipi dei paramentri che devi leggere (%s stringhe, %d interi) seguiti dai nomi che dai loro..
Per la scritturadevi usare la fprintf(FILE *destinatario, char *formato, paramentri)
dove il formato è di nuovo %d, %s ecc
In bocca al lupo!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- Visitatori
-
18 Anni 11 Mesi fa #34715
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic C: lettura da file di alcune macroistruzioni! AIUTO
Grazie mille della tempestiva risposta...
Ma non mì è ben chiara una cosa: il file in .txt a cui devo accedere deve contenere delle istruzioni che mi eseguano delle funzioni(printf(), cos(),sin(),ecc...)
potresti farmi un esempio?
tipo un file main che apre il file ciao.txt, e il file ciao.txt che contiene due righe(di macroistruzioni) contenenti due printf(). (così che, se volessi cambiare le scrittedelle printf(), il main resterebbe lo stesso e cambierei solo le macro del .txt)
Grazie mille!
Ma non mì è ben chiara una cosa: il file in .txt a cui devo accedere deve contenere delle istruzioni che mi eseguano delle funzioni(printf(), cos(),sin(),ecc...)
potresti farmi un esempio?
tipo un file main che apre il file ciao.txt, e il file ciao.txt che contiene due righe(di macroistruzioni) contenenti due printf(). (così che, se volessi cambiare le scrittedelle printf(), il main resterebbe lo stesso e cambierei solo le macro del .txt)
Grazie mille!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 11 Mesi fa #34721
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic C: lettura da file di alcune macroistruzioni! AIUTO
Per la prima cosa è semplice: mettiamo che il file.txt sia nella cartella C:
Non ho capito cosa intendi per fprintf che non cambia il main...
Cmq per capire meglio l'uso delle funzioni di input e output guarda qui:
digilander.libero.it/uzappi/C/librerie/funzioni/fopen.html
int main(int argc, char *argv[])
{
FILE *fp;
char *i;
char comando[50];
//il file viene aperto in lettura e scrittura posizionando lo stream all'inizio
fp=fopen("C:\file.txt", "r+");
if (fp!=NULL)
while(i!=NULL)
{
i=fgets(comando, 50, fp);
if (i!=NULL)
{
//qui dentro fai le operazioni che devi con la macroistruzione
//contenuta nella variabile comando
}
}
}Non ho capito cosa intendi per fprintf che non cambia il main...
Cmq per capire meglio l'uso delle funzioni di input e output guarda qui:
digilander.libero.it/uzappi/C/librerie/funzioni/fopen.html
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- Visitatori
-
18 Anni 11 Mesi fa #34771
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic C: lettura da file di alcune macroistruzioni! AIUTO
questo è quello che ho fatto io:
può andare? è corretto?
e questi sono i file di testo:
uno.txt:
due.txt:
quello che chiedevo io era, se è possibile aprire un file di testo con al suo interno delle istruzioni direttamente in c in modo tale che aprendo il file dal main vengano eseguite direttamente le istruzioni.
esempio:
uno.txt:
Ancora Grazie mille della disponibilità, non puoi capite quanto mi abbia aiutato!!!
può andare? è corretto?
int main()
{
FILE *stream;
char nome_file[20];
char string[40];
static float encoder[5];
int c_encoder=0;
int i;
int caso;
iniz_lett:
printf("inserire il nome del file compreso di estensione\n\n");
scanf("%s", nome_file);
printf("\n\n%s\n", nome_file);
//open a file in read mode
if((stream = fopen(nome_file,"r"))==NULL)
{
printf("Impossibile aprire il file.. \n(assicurarsi di aver inserito il 'nome' in maniera corretta)");
getch();
goto iniz_lett;
}
else
{
stream=fopen(nome_file, "r");
fgets(string,40,stream);
printf("\n%s", string);
caso=atof(&string[0]);
//------------->leggo il primo carattere della stringa e switcho
printf("\n\n%i",caso);
getch();
switch(caso) {
case 0:
printf("\n\ncaso zero");
break;
case 1:
for(i=3; c_encoder<5; i+=6)
{
encoder[c_encoder]=atof(&string[i]);
printf("\n\n%2.2f", atof(&string[i]));
if(string[i-1]=='m')
{
encoder[c_encoder]=-(abs(encoder[c_encoder]));
}
c_encoder++;
}//fine ciclo for
printf("\n BASE Encoders= %2.2f\n",encoder[0]);
printf(" SHOULDER Encoders= %2.2f\n",encoder[1]);
printf(" ELBOW Encoders= %2.2f\n",encoder[2]);
printf(" PITCH Encoders= %2.2f\n",encoder[3]);
printf(" ROLL Encoders= %2.2f\n",encoder[4]);
break;
case 2:
//------------>leggo angoli
printf("caso due");
break;
}//fine switch
getch();
fclose(stream);
}//fine else
system("PAUSE");
return 0;
}e questi sono i file di testo:
uno.txt:
1>m0100>p0200>m1300>m0034>p05600quello che chiedevo io era, se è possibile aprire un file di testo con al suo interno delle istruzioni direttamente in c in modo tale che aprendo il file dal main vengano eseguite direttamente le istruzioni.
esempio:
uno.txt:
printf("ho aperto il file uno..");Ancora Grazie mille della disponibilità, non puoi capite quanto mi abbia aiutato!!!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 11 Mesi fa #34782
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic C: lettura da file di alcune macroistruzioni! AIUTO
Guarda, il codice credo vada bene.. purtroppo, senza commenti le mie capacità di comprensione sono limitate già riguardando miei vecchi programmi... 
Ad ogni modo se lo fai girare e funziona, vuol dire che va bene, no?!?
Cmq se nel file non ci sono più righe, invece della fgets puoi utilizzare la fscanf...
Qui
digilander.libero.it/uzappi/C/librerie/funzioni/scanf.html
ci sono tutte le funzioni per l'input da file.
Per l'altra cosa, ovvero l'utilizzo di istruzioni scritte su file, dubito che si possa fare, perchè il C è un linguaggio compilato e il codice non è automodificante (come per l'asm), nè interpretato, come il Java... ciò vuol dire che quando fai girare il programma il "pacchetto" dovrebbe già essere tutto pronto...
Poi può essere anche che mi sbagli ma, intuitivamente, non mi sembra una cosa fattibile!
Sono contenta di averti sbloccato.. buon lavoro!
Ad ogni modo se lo fai girare e funziona, vuol dire che va bene, no?!?
Cmq se nel file non ci sono più righe, invece della fgets puoi utilizzare la fscanf...
Qui
digilander.libero.it/uzappi/C/librerie/funzioni/scanf.html
ci sono tutte le funzioni per l'input da file.
Per l'altra cosa, ovvero l'utilizzo di istruzioni scritte su file, dubito che si possa fare, perchè il C è un linguaggio compilato e il codice non è automodificante (come per l'asm), nè interpretato, come il Java... ciò vuol dire che quando fai girare il programma il "pacchetto" dovrebbe già essere tutto pronto...
Poi può essere anche che mi sbagli ma, intuitivamente, non mi sembra una cosa fattibile!
Sono contenta di averti sbloccato.. buon lavoro!
Si prega Accedi o Crea un account a partecipare alla conversazione.