#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main() {
char titolo[MAX];
int categoria;
int ambiente;
int risposta;
int opzione;
int i=0;
int t=0;
FILE *e;
do{
printf("1)LIBRI LETTI \n2)LIBRI DA LEGGERE\n");
printf("Digita numero di uno dei due ambienti: ");
scanf("%d%*c", &ambiente);
system("CLS");
}while(ambiente>2 || ambiente<1);
if(ambiente==1)
{
do{
printf("1)INSERIRE UN NUOVO TITOLO ALL'INTERNO DEL CATALOGO DEI LIBRI LETTI \n\n2)VISIONARE CATALOGO PERSONALE DEI LIBRI LETTI");
printf("\n\nDigita numero di una delle due opzioni: ");
scanf("%d%*c", &opzione);
system("CLS");
}while(opzione>2 || opzione<1);
if(opzione==2)
{
}
if(opzione==1)
{
printf ("INSERISCI TITOLO: ");
scanf("%[^\n]s", titolo);
printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
do
{
printf("DIGITA NUMERO DELLA CATEGORIA: ");
scanf("%d%*c", &categoria);
if(categoria>15)
{
system("CLS");
printf("IL TITOLO DEL LIBRO INSERITO E': ");
/* do{
printf("%c ", titolo[i]);
i++;
}while(titolo[i] > 10); */ // cosa significa array di char > 10 ?
printf("%s",titolo);
printf("\n\n");
printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
printf("DI NUOVO ");
}
} while(categoria>15);
if(categoria==1)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\EPICA.txt","a+");
fprintf(e, "%s", titolo);
printf ("Fatto!");
fclose(e);
}
else if (categoria==2)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\LIBRI_SACRI.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==3)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GIALLO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==4)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STORICO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==5)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FILOSOFIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==6)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STRATEGIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==7)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\SATIRA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==8)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\HORROR.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==9)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GOTICO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==10)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\POESIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==11)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FIABE_FAVOLE_ROMANZI-FANTASTICI.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==12)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASY.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==13)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASCIENZA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==14)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\AVVENTURA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==15)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\BIOGRAFIA_SAGGI_CRONACHE.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
do{
system("CLS");
printf("1)SI \n\n2)NO \n\n");
printf("Devi inserire altri titoli ?");
scanf("%d%*c", risposta);
}while(risposta<1 || risposta>2);
if(risposta==1)
{
stampa();
}
else if(risposta==2)
{
printf("SEI FUORI!");
}
}
}
return 0;
}
int stampa()
{
char titolo[MAX];
int categoria;
int ambiente;
int esci;
int opzione;
int i=0;
int t=0;
FILE *e;
printf ("INSERISCI TITOLO: ");
scanf("%[^\n]s", titolo);
printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
do
{
printf("DIGITA NUMERO DELLA CATEGORIA: ");
scanf("%d%*c", &categoria);
if(categoria>15)
{
system("CLS");
printf("IL TITOLO DEL LIBRO INSERITO E': ");
/* do{
printf("%c ", titolo[i]);
i++;
}while(titolo[i] > 10); */ // cosa significa array di char > 10 ?
printf("%s",titolo);
printf("\n\n");
printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
printf("DI NUOVO ");
}
} while(categoria>15);
if(categoria==1)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\EPICA.txt","a+");
fprintf(e, "%s", titolo);
printf ("Fatto!");
fclose(e);
}
else if (categoria==2)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\LIBRI_SACRI.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==3)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GIALLO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==4)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STORICO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==5)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FILOSOFIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==6)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STRATEGIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==7)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\SATIRA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==8)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\HORROR.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==9)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GOTICO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==10)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\POESIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==11)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FIABE_FAVOLE_ROMANZI-FANTASTICI.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==12)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASY.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==13)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASCIENZA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==14)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\AVVENTURA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==15)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\BIOGRAFIA_SAGGI_CRONACHE.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
return 0;
}
Sopra ho riportato l'intero programma... L'obbiettivo sarebbe riuscire -se si vuole- a inserire nuove stringhe (titolo) all'interno del file di testo, senza dover ogni volta chiudere e riaprire il programma... Ho pensato quindi al dichiarare fuori dal main una funzione che ho chiamato stampa() , in cui mettere quella parte di codice che vorrei richiamare all'interno del main se l'utente digita 1 (ovvero, si, voglio inserire un nuovo titolo nel file).
Purtroppo non ho esperienza con le funzioni, e devo aver sbagliato qualcosa.
Per esempio, dovrei mettere qualcosa dentro le parentesi che seguono il nome della funzione stampa() ?
Sotto vi riporto soltanto la parte di codice che riguarda la funzione dichiarata dopo il main:
int stampa()
{
char titolo[MAX];
int categoria;
int ambiente;
int esci;
int opzione;
int i=0;
int t=0;
FILE *e;
printf ("INSERISCI TITOLO: ");
scanf("%[^\n]s", titolo);
printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
do
{
printf("DIGITA NUMERO DELLA CATEGORIA: ");
scanf("%d%*c", &categoria);
if(categoria>15)
{
system("CLS");
printf("IL TITOLO DEL LIBRO INSERITO E': ");
/* do{
printf("%c ", titolo[i]);
i++;
}while(titolo[i] > 10); */ // cosa significa array di char > 10 ?
printf("%s",titolo);
printf("\n\n");
printf("\n1)Epica \n2)Libri Sacri \n3)Giallo \n4)Storico \n5)Filosofia \n6)Strategia \n7)Satira \n8)Horror \n9)Gotico \n10)Poesia \n11)Fiabe, favole e romanzi fantastici \n12)Fantasy \n13)Fantascienza \n14)Avventura \n15)Biografie, saggi, cronache \n\n");
printf("DI NUOVO ");
}
} while(categoria>15);
if(categoria==1)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\EPICA.txt","a+");
fprintf(e, "%s", titolo);
printf ("Fatto!");
fclose(e);
}
else if (categoria==2)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\LIBRI_SACRI.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==3)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GIALLO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==4)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STORICO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==5)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FILOSOFIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==6)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\STRATEGIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==7)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\SATIRA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==8)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\HORROR.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==9)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\GOTICO.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==10)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\POESIA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==11)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FIABE_FAVOLE_ROMANZI-FANTASTICI.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==12)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASY.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==13)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\FANTASCIENZA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==14)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\AVVENTURA.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
else if (categoria==15)
{
e= fopen ("C:\\Users\\NB03\\Desktop\\PROGRAMMAZIONE\\C\\CATALOGO\\categorie\\BIOGRAFIA_SAGGI_CRONACHE.txt","a+");
fprintf (e, "%s",titolo);
printf ("Fatto! \n");
fclose(e);
}
return 0;
}
E qui sotto vi riporto soltanto la parte all'interno del main in cui richiamo la funzione stampa();
do{
system("CLS");
printf("1)SI \n\n2)NO \n\n");
printf("Devi inserire altri titoli ?");
scanf("%d%*c", risposta);
}while(risposta<1 || risposta>2);
if(risposta==1)
{
stampa();
}
else if(risposta==2)
{
printf("SEI FUORI!");
}
Grazie tante ancora... al momento, così com'è, se digito 1 (si, voglio inserire un nuovo titolo nel file di testo) il programma si interrompe..