Il programma opera nella console... non so ancora programmare un'interfaccia grafica!
La parte che mi manca è proprio quella che mi permette di modificare il file in tempo reale.
Mi rendo conto che forse non mi sono ben spiegato sul da farsi... purtroppo, è un po' complicato da spiegare a parole!
Non voglio stampare a schermo il contenuto del file e poi sostituirlo con il nuovo contenuto. Per essere precisi, non voglio fare questo:
codice:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *stream = NULL;
int filesize, check, blocks = 1;
char *buffer = NULL, c;
stream = fopen("myfile.txt", "r");
if (stream == NULL){
fprintf(stderr, "Errore: impossibile aprire il file");
exit(1);
}
fseek(stream, 0, SEEK_SET);
filesize = ftell(stream);
rewind(stream);
buffer = (char*)malloc(filesize * sizeof(char));
if (buffer == NULL){
fprintf(stderr, "Errore: impossibile allocare la memoria necessaria");
exit(2);
}
check = fread(buffer, 1, filesize, stream);
if (check != filesize){
fprintf(stderr, "Errore: impossibile leggere dal file specificato");
exit(3);
}
printf("Il contenuto attuale del file e': \n%s", buffer);
fclose(stream);
free(buffer);
buffer = NULL;
stream = fopen("myfile.txt", "w");
if (stream == NULL){
fprintf(stderr, "Errore: impossibile aprire il file");
exit(1);
}
printf("Inserire il nuovo contenuto del file: \n");
while (c = getchar()){
buffer = (char*)realloc(buffer, blocks * sizeof(char));
if (buffer == NULL){
fprintf(stderr, "Errore: impossibile allocare la memoria necessaria");
exit(2);
}
if (c == '\n'){
buffer[blocks-1] = '\0';
break;
}
buffer[blocks-1] = c;
blocks++;
}
check = fwrite(buffer, 1, blocks, stream);
if (check != blocks){
fprintf(stderr, "Errore: impossibile scrivere sul file specificato");
exit(3);
}
fclose(stream);
free(buffer);
return 0;
}
Se avevi capito questo, avevi capito male!
P.S.= Se c'è qualche errore nel codice è perchè l'ho scritto di getto... non ho testato questo codice, ma serve a rendere l'idea!