Buenas. Quiero saber si hay alguna forma de borrar datos de un fichero. Puntualmente lo que quiero hacer es quitar los 2 bytes que agrega fputs al final de cada archivo.
Un metodo para borrar datos de un fichero, es crear un fichero fichero nuevo vacio, poner en el fichero nuevo todos los datos del fichero viejo excepto lo que queremos borrar, borrar el viejo (o por si acaso renombrarlo como fichero backup), y por ultimo cambiar el nombre del fichero nuevo por el nombre del fichero viejo, seguro que hay mas metodos pero este es el mas sencillo.
para eso, no uses fputs...
usa fwrite...
Estaria bueno que hubiese una funcion que haga lo que dice Kim-elet-o. Es decir, borrar los datos de un fichero a partir de un punto. No uso fwrite por que la idea es guardar ficheros binarios. Gracias a los dos.
Edito:
Tambien me gustaria sugerir que si a fputs se le pasara como parametro un dato numerico (int,word,etc),no convierta dicho dato a cadena, sino que guarde el verdadero valor.Por ejemplo:
byte var = 65;
..
fputs(fichero,var); // guarda "A"
fputs(fichero,itoa(var));//guarda 65
la "s" del fput, indica string... para lo que queres tenes fwrite...
con respecto a truncar un archivo, no te recomiendo lo hagas solo para sacar los 2 bytes del fputs... es muy costoso y no hay en bennu/fenix la funcion adecuada para hacerlo...
Tenes razon con lo del fwrite.Gracias.