elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Guardar nulos a izquierda y no ha derecha.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar nulos a izquierda y no ha derecha.  (Leído 3,828 veces)
Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Guardar nulos a izquierda y no ha derecha.
« en: 25 Diciembre 2012, 21:52 pm »

Buenas gente, estoy haciendo un spike (programa de prueba) para guardar en un archivo binario, el contenido de una variable de tipo "long long",por ejemplo supongamos que tenemos el valor "6938217" guardado en esa variable, y lo guardo en un archivo en modo binario, el mismo quedaria asi (visto con el Notepad++):

Código:
iÞi[NUL][NUL][NUL][NUL][NUL]

Lo que necesito es que me queda asi:

Código:
[NUL][NUL][NUL][NUL][NUL]iÞi

Alguna idea? Gracias!

El programa que genera esto es el siguiente:

Código:
#include<iostream>
#include<fstream>
#include<sstream>
#include <stdlib.h>

using namespace std;

int main()
{
    struct transaccion
    {
           long long importe;
    };
   

   
   
    ofstream file;
    file.open("Base.txt",ios::app | ios::binary);
   
    struct transaccion trx;
   
    trx.importe=6938217;
   
    file.write((char *)&trx,sizeof(trx));
   
    file.close();
   
   
    return 0;
       
}



En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Guardar nulos a izquierda y no ha derecha.
« Respuesta #1 en: 25 Diciembre 2012, 21:57 pm »

Pues hacer tu propio método write() que escriba como lo desees.


En línea

Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Re: Guardar nulos a izquierda y no ha derecha.
« Respuesta #2 en: 26 Diciembre 2012, 01:02 am »

Por favor explicame como puedo implementar ese metodo, de que forma??
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Guardar nulos a izquierda y no ha derecha.
« Respuesta #3 en: 26 Diciembre 2012, 05:00 am »

No me manejo mucho con C++, pero en C una solución sería la siguiente:

Código
  1. #include <stdio.h>
  2.  
  3. struct transaccion
  4. {
  5.       long long importe;
  6. } trx;
  7.  
  8. void myfwrite(char * buffer, size_t bytes, FILE *fp) {
  9.    while(bytes)
  10.        fputc(buffer[--bytes],fp);
  11. }
  12.  
  13. int main(){
  14.    trx.importe = 6938217;
  15.    FILE *fp = fopen("prueba.bin","ab");
  16.    myfwrite(&trx,sizeof(trx),fp);
  17.    fclose(fp);
  18.    return 0;
  19. }
  20.  
  21.  

EDIT:

Hice un equivalente en C++, espero te sirva:

Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. struct transaccion {
  5.    long long importe;
  6. } trx;
  7.  
  8. class myofstream : public std::basic_ofstream<char> {
  9. public:
  10.    std::ostream& mywrite(const char* s, std::streamsize n) {
  11.        while(n)
  12.            put(s[--n]);
  13.        return *this;
  14.    }
  15. };
  16.  
  17. int main() {
  18.    trx.importe=6938217;
  19.    myofstream f;
  20.    f.open("prueba.txt",std::ios::app|std::ios::binary);
  21.    f.mywrite((const char*)&trx,sizeof(trx));
  22.    f.close();
  23.    return 0;
  24. }
  25.  
« Última modificación: 26 Diciembre 2012, 07:39 am por naderST » En línea

lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: Guardar nulos a izquierda y no ha derecha.
« Respuesta #4 en: 26 Diciembre 2012, 15:42 pm »

Hola . Solo venia a decirte una cosa en el titulo pon si el code es c o c++ , ya que yo programo en C y nunca he tocado c++ ,
así evitamos posibles malentendidos.

En cuanto a tu problema como antes he citado estoy OUT en c++ , no te puedo ayudar , si no lo haria
PD : Dichoso crypt code c++ , yo en C esas cosas las hago con un pequeno bucle y sin usar esa selva de variables de c++ :P

Saludos
En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Re: Guardar nulos a izquierda y no ha derecha.
« Respuesta #5 en: 27 Diciembre 2012, 01:17 am »

Hola, genial naderST lo hago con C no hay problema. Tengo otra cosita, sabes como puedo escribir un salto de linea en el archivo? Probe grabando el "\n" pero solo me queda el "LF" y necesito que quede el "CR" y "LF" completo.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Guardar nulos a izquierda y no ha derecha.
« Respuesta #6 en: 27 Diciembre 2012, 01:23 am »

Escribes \n (LF) y \r (CR)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines