PDA

Visualizza la versione completa : [C] Programmazione e lettura da file


pascer
21-06-2016, 11:44
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!

Sky
21-06-2016, 13:25
Il forum corretto è Programmazione e, visto che hai già scritto lì, chiudo questa discussione.

Loading