24/12/10 14:42
Pitagora
però ragazzi ho provato a creare e compilare quindi eseguire questo programma:
#include <stdio.h>
typedef struct {
int anni;
char *nome;
} persona;
int main (void) {
persona uomo;
uomo.anni = 16;
uomo.nome = "Francesco";
FILE *testo;
testo = fopen("prova", "wb");
fwrite(&uomo, sizeof(persona), 1, testo);
/* vediamo se li legge */
fread(&uomo, sizeof(persona), 1, testo);
printf("Persona {\n\t anni = %d\n\t nome = %s\n}\n\n", uomo.anni, uomo.nome);
fclose(testo);
return 0;
}
Come potete vedere scrivo grazie alla funzione fwrite tutta la struct persona. Come potete vedere dichiaro la variabile int anni (presente nella struct persona) = 16 (senza apici) Successivamente leggo ciò che ho scritto in precedenza è indovinato che esce?
pitagora@pitagora:~$ ./try
Persona {
anni = 16
nome = Francesco
}
Non dovrebbe uscire l'ascii di 16?
Un altra domanda: se apro il file con un banalissimo editor mi escono scritte senza senso. Se invece faccio eseguire questo programma (simile a precedente), volevo vedere se con altre funzioni tipo fscanf riusciva a leggere.
Risultato:
#include <stdio.h>
typedef struct {
int anni;
char *nome;
} persona;
int main (void) {
persona uomo;
uomo.anni = 16;
uomo.nome = "Francesco";
FILE *testo;
testo = fopen("prova", "wb");
fwrite(&uomo, sizeof(persona), 1, testo);
/* vediamo se li legge */
fscanf(testo, "%d", &uomo.anni);
fscanf(testo, "%s", uomo.nome);
printf("Persona {\n\t anni = %d\n\t nome = %s\n}\n\n", uomo.anni, uomo.nome);
fclose(testo);
return 0;
}
Output:
pitagora@pitagora:~$ ./try
Persona {
anni = 16
nome = Francesco
}
me le legge tranquillamente! Perchè con un editor no?
Ultima modifica effettuata da Pitagora 24/12/10 14:50
aaa