[ Foro de C ]
Buenas, necesito saber como puedo modificar un parametro que se encuentra en un array de un struct dentro de un fichero binario. Debo acceder al fichero y revisar el struct entero con el objetivo de ver si un parametro es inferior a 4, cambiar otro. Llevo varios dias intentadolo hacer y no me funciona.
Para modificar un parámetro que se encuentra en un array de un struct dentro de un fichero binario, debes seguir los siguientes pasos:
1. Abrir el fichero binario en modo lectura y escritura usando la función fopen().
2. Leer el struct del fichero binario usando la función fread() y almacenarlo en una variable.
3. Verificar si el parámetro que quieres modificar es menor que 4. Si es así, modifica el otro parámetro que deseas cambiar.
4. Vuelve a escribir el struct modificado en el fichero binario usando la función fwrite().
5. Cierra el fichero usando la función fclose().
Aquí te dejo un ejemplo de cómo podrías hacerlo:
#include <stdio.h>
struct ejemplo {
int array[5];
int parametro1;
int parametro2;
};
int main() {
FILE *archivo;
struct ejemplo mi_struct;
// Abrir el fichero binario en modo lectura y escritura
archivo = fopen("mi_fichero.bin", "rb+");
// Leer el struct del fichero binario
fread(&mi_struct, sizeof(mi_struct), 1, archivo);
// Verificar si el parámetro que quieres modificar es menor que 4
if (mi_struct.array[2] < 4) {
// Modificar el otro parámetro que deseas cambiar
mi_struct.parametro2 = 100;
}
// Volver a escribir el struct modificado en el fichero binario
fseek(archivo, 0, SEEK_SET);
fwrite(&mi_struct, sizeof(mi_struct), 1, archivo);
// Cerrar el fichero
fclose(archivo);
return 0;
}
Ten en cuenta que este es solo un ejemplo y que debes adaptarlo a tus necesidades específicas. También es importante asegurarte de que el tamaño de la estructura que estás leyendo y escribiendo sea el mismo en ambos casos para evitar problemas de compatibilidad entre diferentes sistemas o compiladores.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)