Originariamente inviato da billiejoex
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;
 }
Acc! E' vedendo queste cose che non mi pento di aver scelto python!
(con tutto il rispetto per il tuo codice, ovviamente)
E' possibilissimo che il mio codice in questo caso sia del tutto criticabile, l'ho scritto veramente in cinque minuti quindi non sarà certo il max della robustezza ed eleganza
.Per quanto riguarda la scelta di python io concordo pienamente che per problemi già "ad lato livello" come questo il c non sia la scelta più adatta (se non per il fatto che si ottiene un exe standalone), tanto è vero che mi sono imparato un altro linguaggio estremamente più robusto (dal punto di vista della gestione degli errori) ,semplice da usare e ricco di funzionalità già implementate: JAVA!
In certi casi però senza il C non vai da nessuna parte o almeno devi fare i salti mortali. Se vuoi solo un esempio quando devi scrivere un driver di sistema o modificarne una parte come lo fai? In python?O in java?....