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 eleganzaOriginariamente inviato da billiejoex
Acc! E' vedendo queste cose che non mi pento di aver scelto python!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; }
(con tutto il rispetto per il tuo codice, ovviamente)![]()
.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?....![]()