ayuda con uso de fwrite actualizar fichero en c

Iniciado por adriana13, 4 Octubre 2018, 00:20 AM

0 Miembros y 1 Visitante están viendo este tema.

adriana13

hola! tengo que actualizar un archivo en c y el profesor me dijo q pruebe con fwrite... la verdad estoy perdida porque no se como hacer para que actualice los datos q voy cargando

aca va la consigna y el codigo que estoy haciendo:

/* Dado un archivo de registros de tres campos (legajo: entero; sueldo: real; adicional: real), realizar un programa
que permita actualizar el archivo,
de modo que el sueldo sea incrementado en 0.5 veces el adicional.
Los sueldos que se deben modificar son aquellos
que cumplan con alguna de las siguientes condiciones:
-Legajo entre 1 y 5454, y el sueldo menor a $350.
-Legajo entre 6000 y 9800, y el adicional sea menor a $200.
-Legajo mayor a 15300*/

#include <stdio.h>
#include<stdlib.h>

FILE *archivo;
struct datosempleado{
   int legajo;
   float sueldo;
   float adicional;
}datos;

void crear(){
   FILE *archivo;
   char respuesta;
   archivo= fopen("C:\\Users\\adria\\Downloads\\registros.txt", "a+t");
   if(archivo==NULL){
      printf("Error");
      return 1;
   }
   do{
   
   printf ("\nIngrese numero de legajo: ");
   scanf("%i", &datos.legajo);
   printf("\nIngrese su sueldo: ");
   scanf("%f", &datos.sueldo);
   printf("\n Ingrese su adicional: ");
   scanf("%f", &datos.adicional);
   fflush(stdin);
   fprintf(archivo, "\nNumero de Legajo: ");
   fwrite(&datos.legajo, 1, sizeof(datos.legajo), archivo);
   fprintf(archivo, "\nSueldo: ");
   fwrite(&datos.sueldo, 1, sizeof(datos.sueldo),archivo);
   fprintf(archivo, "\nAdicional: ");
   fwrite(&datos.adicional, 1, sizeof(datos.adicional),archivo);
   printf("desea agregar más datos: (s)");
      scanf ("%c",&respuesta);
   }   while(respuesta== 's');   
   fclose(archivo);
}


void Actualizar(){
   float sueldoActual;

   FILE *archivo;

   archivo= fopen("C:\\Users\\adria\\Downloads\\registros.txt", "w+");
      if(archivo==NULL){
      printf("Error");
      return 1;
   }
   else{
   
   fread(&datos, sizeof(datos),1,archivo);
   printf("%i %.2f %.2f\n", datos.legajo, datos.sueldo, datos.adicional);

   rewind(archivo);
   
      if((datos.legajo>1) && (datos.legajo<5454) && (datos.sueldo<350)){
      sueldoActual= (datos.adicional *  0.5) + datos.sueldo;
         fwrite(&datos, sizeof(datos.sueldo),1,archivo);
   }
      if((datos.legajo>6000) && (datos.legajo<9800) && (datos.adicional<200)){
      sueldoActual= (datos.adicional *  0.5) + datos.sueldo;
         fwrite(&datos, sizeof(datos.sueldo),1,archivo);
   }
      if(datos.legajo>15300){
      sueldoActual= (datos.adicional *  0.5) + datos.sueldo;
         fwrite(&datos, sizeof(datos.sueldo),1,archivo);
   }

         printf("Sueldo actual: %.2f"), sueldoActual;}
      
      fclose(archivo);
      return 0;
}

int main(){
   int opc;
   do{
      printf ("\n1. Crear Archivo de registro");
      printf ("\n2. Actualizar sueldo: ");
      printf("\n3. Salir\n");
      printf("\nIngrese opcion: ");
      scanf("%i", &opc);
      
      switch(opc){
         case 1: crear();
         case 2: Actualizar();
      }
   }
   while(opc != 3);
   
   
   return 0;
}

Beginner Web

Es con w para archivos wb para archivos binarios sirve para agregar en modo escritura  y a+  para archivos y ab+ para archivos binarios este ultimo abre el archivo modo lectura/escritura y agrega al final
7w7