Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Si scriva un programma che legge da un FILE contenetente per ogni riga il nome di una citta',
- la sua provincia di appartennenza e il codice di avviamento postale.
- Il programma calcola poi un codice relativo ad ogni riga e formato dalle prime 2 lettere del
- nome della citta', dalle prime 2 lettere della provincia e dalle prime sue lettere del codice
- postale e le stampa su un file come rioportato nell'esempio.
- ESEMPIO:
- Con riferimento al file "testo.txt" contenente le seguenti citta':
- Eboli Salerno 84025
- Rho Milano 20017
- Pompei Napoli 80045
- Pomezia Roma 00040
- Battipaglia Salerno 84091
- SanGennaroVesuviano Napoli 80040
- il programma calcola i codici e produce ESATTAMENTE il seguente output in un file:
- 1. (EbSa84) Eboli Salerno 84025
- 2. (RhMi02) Rho Milano 20017
- 3. (PoNa80) Pompei Napoli 80045
- 4. (PoRo06) Pomezia Roma 00040
- 5. (BaSa84) Battipaglia Salerno 84091
- 6. (SaNa80) SanGennaroVesuviano Napoli 80040
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAXSTR 100
- #define MAXCAR 100
- #define MAXCIT 32
- /* Prototipi di funzione */
- int LeggiElenco(FILE *fp, char [MAXCIT][MAXCAR]);
- void GeneraCodici(char [MAXCIT][MAXCAR], char [MAXCIT][MAXCAR], int);
- void SalvaSuFile(char [MAXCIT][MAXCAR], char [MAXCIT][MAXCAR], int);
- FILE * my_fopen(char *);
- /* programma principale */
- int main()
- {
- int n;
- FILE * fp;
- char string[MAXCIT][MAXCAR], code[MAXCIT][MAXCAR];
- fp=my_fopen("r");
- n=LeggiElenco(fp, string);
- GeneraCodici(string, code, n);
- fclose(fp);
- SalvaSuFile(string, code, n);
- return 0;
- }
- /* FUNZIONE DA COMPLETARE */
- int LeggiElenco(FILE *fp, char string[][MAXCAR])
- {
- int n=0;
- while(feof(fp)==0){
- fgets(string[n++], MAXCAR-1, fp);
- }
- return n;
- }
- /* FUNZIONE DA COMPLETARE */
- void GeneraCodici(char string[][MAXCAR], char code[][MAXCAR], int r)
- {
- int i, numtemp;
- char strtemp[2][MAXSTR];
- for(i=0;i<r;i++){
- sscanf(string[i], "%s %s %d", strtemp[0], strtemp[1], &numtemp);
- strtemp[0][2]='\0';
- strtemp[1][2]='\0';
- sprintf(code[i], "%s%s%.2d", strtemp[0], strtemp[1], numtemp/1000);
- }
- }
- /* FUNZIONE DA COMPLETARE */
- void SalvaSuFile(char string[][MAXCAR], char code[][MAXCAR], int r)
- {
- int i;
- FILE * fp;
- fp=my_fopen("w");
- for(i=0;i<r;i++)
- fprintf(fp, "%d. (%s) %s", i+1, code[i], string[i]);
- }
- FILE * my_fopen(char * mode){
- FILE * fp;
- char filename[MAXSTR];
- printf("Inserisci il nome del file di %s\n", (mode[0]=='r')?("input"):("output"));
- scanf("%s", filename);
- if((fp=fopen(filename, mode))==NULL)
- abort();
- return fp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement