Non capisci il mio problema o l'esercizio?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct cinema {
char nome[20];
int posto;
int ora;
int minuti;
};
struct cinema CERCA(char *nome, struct cinema *c) {
struct cinema retval;
int i = 0;
while (i<4 && (strcmp (nome, c[i].nome) != 0)) {
i++;
}
if(i<4)
retval = c[i];
else
retval.nome[0] = '\0';
return retval;
}
int main(int argc, char **argv) {
FILE *fp;
fp = fopen(argv[1], "a+");
if(fp == NULL) {
printf("errore nell'apertura\n");
exit(1);
}
struct cinema *cine;
cine = malloc(sizeof(struct cinema)*4); //4 sono le righe del codice
int i;
for(i=0; i<4; i++) {
fscanf(fp, "%s, %d, %d:%d\n", &cine[i].nome, &cine[i].posto, &cine[i].ora, &cine[i].minuti);
printf("%s, %d, %d:%d\n", cine[i].nome, cine[i].posto, cine[i].ora, cine[i].minuti); //non stampa correttamente il contenuto del file
}
char scelta;
printf ("inserisci opzione: a) ricerca, b) aggiungi\n");
scanf("%c", &scelta);
if(scelta == 'a') {
char nome[20];
printf("inserisci nome: ");
scanf("%[^\n]", &nome);
getchar();
struct cinema ricerca;
ricerca = CERCA(nome, cine);
printf("dati: %s, %d, %d:%d\n", ricerca.nome, ricerca.posto, ricerca.ora, ricerca.minuti);
}
if(scelta == 'b') {
int quanti;
printf("quanti ne vuoi inserire?");
scanf("%d", &quanti);
for(i=4; i<4+quanti; i++) {
printf("nome: ");
scanf("%[^\n]", &cine[i].nome);
getchar();
printf("posto:");
scanf("%d", &cine[i].posto);
printf("ora: ");
scanf("%d", &cine[i].ora);
printf("minuti: ");
scanf("%d", &cine[i].minuti);
fprintf(fp, "%s, %d, %d:%d\n", cine[i].nome, cine[i].posto, cine[i].ora, cine[i].minuti);
}
}
free(cine);
close(fp);
return 0;
}