codice:
#include <stdio.h>
#include <stdlib.h>
#define BASE_BUFF_CAPACITY 80; //lunghezza base del buffer di lettura
int main(int argc,char* argv[])
{
//dichiarazioni
int buff_size = BASE_BUFF_CAPACITY;
char* buff = (char*)malloc(buff_size);
int ch,i = 0;
FILE* fp = NULL;
//controllo parameri in input al programma
if(argc != 2)
{
printf("Error: wrong parameters number!");
return -1;
}
//apertura in lettura del file
fp = fopen(argv[1], "r");
if( fp == NULL )
{
printf("Error: problem while opening the file %s!", argv[1]);
return -1;
}
//lettura in un buffer di caratteri del contenuto del file
//escludendo gli accapo ('\n')
ch = fgetc(fp);
while(ch != EOF)
{
if(ch != '\n') //saltiamo gli accapo
{
buff[i] = ch;
i++;
}
//superati gli 80 caratteri estendiamo il buffer
if(i == buff_size)
buff_size += BASE_BUFF_CAPACITY;
buff = (char*)realloc(buff,buff_size);
ch = fgetc(fp);
}
//aggiungiamo il terminatore di fine stringa
buff[i] = '\0';
//ripertura del file in sola scrittura (cancella il contenuto precedente)
fclose(fp);
fp = fopen(argv[1], "w");
if( fp == NULL )
{
printf("Error: problem while opening the file %s!", argv[1]);
return -1;
}
//scrittura del buffer sul file
for(i =0 ; buff[i] != '\0'; i++)
fputc(buff[i],fp);
//rilascio risorse di memoria
free(buff);
return 0;
}
Un semplice programmino C, hai solo bisogno di un compilatore come Minggw (o gcc sotto linux) e dovresti ottenere senza problemi l'eseguibile. Poi lo richiami con nomeprog.exe nome_file da prompt.