Ciao ragazzi, sono alle prime armi con questo forum quindi perdonatemi se sarò poco chiaro. Sto imparando a programmare in C e mi capita spesso di avere a che fare con i FILE. In questo esercizio devo aprire il file e memorizzare il suo contenuto nei 4 array dichiarati. Potreste dirmi cortesemente come faccio a memorizzare la stringa di caratteri? I numeri si memorizzano correttamente, invece le parole no. Come devo fare? E cosa devo modificare?
int main(int argc, char** argv) {
FILE *f;
int i, j;
int N;
int s;
char nome[MAX];
int record[MAX];
int quantita[MAX];
float prezzo[MAX];
int c;
int rec, qnt;
float pr;
printf("Digitare '1' per aggiungere un altro attrezzo\n");
printf("Digitare '2' per controllare un attrezzo\n");
printf("Digitare '3' per modificare un attrezzo\n");
printf("Digitare '4' per terminare il programma\n");
printf("? ");
scanf("%d", &c);
while( c != 4) {
if (c == 1) {
f = fopen("testonuovo.txt", "a");
if(f == NULL) {
printf("Errore!");
exit(1);
}
printf("Inserire il record dell'attrezzo: ");
scanf("%d", &rec);
printf("Inserire il nome dell'attrezzo: ");
scanf("%s", nome);
printf("Inserire la quantita dell'oggetto: ");
scanf("%d", &qnt);
printf("Inserire il prezzo dell'attrezzo: ");
scanf("%f", &pr);
fprintf(f, "\n%d\t%s\t%d\t%.2f", rec, nome, qnt, pr);
fclose(f);
}
if (c == 2) {
f = fopen("testonuovo.txt", "r");
if(f == NULL) {
printf("Errore!");
exit(1);
}
for(i=0; !feof(f); i++) {
fscanf(f, "%d %s %d %f", &record[i], &nome[i], &quantita[i], &prezzo[i]);
}
printf("Quale attrezzo si vuole controllare?\nRecord: ");
scanf("%d", &rec);
for(j=0; j<i; j++) {
if(record[j] == rec) {
printf("\n%d\t%s\t%d\t%.2f", record[j], &nome[j], quantita[j], prezzo[j]);
}
}
fclose(f);
}
Il file è questo:
3 levigatrice 7 57.98
17 martello 76 11.99
24 seghetto 21 11.00
39 tagliaerba 3 79.50
ogni qual volta voglio stampare i nomi mi esce: lmstagliaerba (ad esempio)
Grazie in anticipo per l'aiuto!