Salve, oggi mi è stato assegnato questo problema: "Scrivi un programma che legge un file di testo e crei un nuovo file che abbia il contenuto del primo senza gli spazi".
Credo di averlo risolto però ho dei dubbi sull' efficacia e la semplicità del codice... Potreste darmi una mano a capire se è tutto giusto?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSTR 81
int main(void)
{
FILE *puntaFile, *pFile;
int I, J, N, continua, Frasi;
char buffer[MAXSTR+1], buffer1[MAXSTR+1], word[25], word1[25];
printf("\nVuoi creare il file?(1 per creare, 0 per leggere ed eseguire l'operazione richiesta)");
scanf("%d", &continua);
if(continua==1)
{
printf("Inserisci il nome del file sorgente da creare: ");
scanf("%s", word);
printf("Inserisci il numero di frasi: ");
scanf("%d", &Frasi);
puntaFile = fopen(word, "w");
if(puntaFile!=NULL)
{
for(I=0;I<Frasi;I++)
{
printf("Inserisci la frase: ");
fflush(stdin);
gets(buffer);
fputs(buffer, puntaFile);
fputc((int) '\n', puntaFile);
}
fclose(puntaFile);
}
else
{
printf("Errore! Il file non puo' essere aperto!\n");
exit(1);
}
}
else
{
printf("Inserisci il nome del file sul quale effettuare la rimozione degli spazi: ");
scanf("%s", word);
printf("Inserisci il nome del nuovo file: ");
scanf("%s", word1);
puntaFile = fopen(word, "r");
pFile = fopen(word1, "w");
if(puntaFile!=NULL && pFile!=NULL)
{
while(fgets(buffer, MAXSTR, puntaFile)!=NULL)
{
N=strlen(buffer);
for(I=0, J=0; I<N; I++)
{
if(buffer[I]!=' ')
buffer1[J++]=buffer[I];
buffer1[J] = '\0';
}
fputs(buffer1, pFile);
}
}
}
fclose(puntaFile);
fclose(pFile);
pFile = fopen(word1, "r");
if(pFile!=NULL)
{
while(fgets(buffer, MAXSTR, pFile)!=NULL)
printf("%s", buffer);
fclose(pFile);
}
}
I miei dubbi riguardano soprattutto questo else:
else
{
printf("Inserisci il nome del file sul quale effettuare la rimozione degli spazi: ");
scanf("%s", word);
printf("Inserisci il nome del nuovo file: ");
scanf("%s", word1);
puntaFile = fopen(word, "r");
pFile = fopen(word1, "w");
if(puntaFile!=NULL && pFile!=NULL)
{
while(fgets(buffer, MAXSTR, puntaFile)!=NULL)
{
N=strlen(buffer);
for(I=0, J=0; I<N; I++)
{
if(buffer[I]!=' ')
buffer1[J++]=buffer[I];
buffer1[J] = '\0';
}
fputs(buffer1, pFile);
}
}
}
Vi ringrazio anticipatamente.