Finales/Virtuales/final-9511-2021-04-17/ej5.c
/**
 * @brief   Crea una cuenta.
 * @pre     El nombre de la cuenta no debe estar vacio y no debe existir previamente.
 * @param   *nombre: nombre de la cuenta
 * @retval  Devuelve una cuenta con el nombre indicado
 */
@brief   Crea una cuenta.
@pre     El nombre de la cuenta no debe estar vacio y no debe existir previamente.
@param   *nombre: nombre de la cuenta
@retval  Devuelve una cuenta con el nombre indicado
@brief Crea una cuenta . @pre El nombre de la cuenta no debe estar vacio y no debe existir previamente . @param * nombre : nombre de la cuenta @retval Devuelve una cuenta con el nombre indicado
cuenta_t *cuenta_crear(const char *nombre) {
    cuenta_t *cuenta = malloc(sizeof(cuenta_t));
    if (cuenta == NULL)
        return NULL;
    cuenta->nombre = malloc(strlen(nombre) + 1);
    if (cuenta->nombre == NULL) {
        free(cuenta);
        return NULL;
    }
    strcpy(cuenta->nombre, nombre);
    cuenta->saldo = 0;
    char *nombre_archivo = malloc(strlen(nombre) + 6);
    if (nombre_archivo == NULL) {
        free(cuenta->nombre);
        free(cuenta);
        return NULL;
    }
    strcpy(nombre_archivo, nombre);
    strcat(nombre_archivo, EXTENSION_MOVIMIENTOS);
    cuenta->archivo_movimientos = nombre_archivo;
    FILE *f_mov = fopen(nombre_archivo, "w");
    if (f_mov == NULL) {
        free(cuenta->nombre);
        free(cuenta->archivo_movimientos);
        free(cuenta);
        return NULL;
    }
    fclose(f_mov);
    return cuenta;
}
cuenta_t * cuenta_crear ( const char * nombre ) { cuenta_t * cuenta = malloc ( sizeof ( cuenta_t ) ) ; if ( cuenta == NULL ) return NULL ; cuenta -> nombre = malloc ( strlen ( nombre ) + 1 ) ; if ( cuenta -> nombre == NULL ) { free ( cuenta ) ; return NULL ; } strcpy ( cuenta -> nombre , nombre ) ; cuenta -> saldo = 0 ; char * nombre_archivo = malloc ( strlen ( nombre ) + 6 ) ; if ( nombre_archivo == NULL ) { free ( cuenta -> nombre ) ; free ( cuenta ) ; return NULL ; } strcpy ( nombre_archivo , nombre ) ; strcat ( nombre_archivo , EXTENSION_MOVIMIENTOS ) ; cuenta -> archivo_movimientos = nombre_archivo ; FILE * f_mov = fopen ( nombre_archivo , " " ) ; if ( f_mov == NULL ) { free ( cuenta -> nombre ) ; free ( cuenta -> archivo_movimientos ) ; free ( cuenta ) ; return NULL ; } fclose ( f_mov ) ; return cuenta ; }
@brief   Crea una cuenta.
@brief Crea una cuenta .
// Archivo.movi