Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Grabar cadena constante en archivo

Estas en el tema de Grabar cadena constante en archivo en el foro de C/C++ en Foros del Web. Hola a todos tengo el siguiente codigo, la idea es poder grabar una cadena constante en un archivo de texto, pero al abrir el archivo ...
  #1 (permalink)  
Antiguo 09/09/2014, 22:02
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años
Puntos: 0
Grabar cadena constante en archivo

Hola a todos tengo el siguiente codigo, la idea es poder grabar una cadena constante en un archivo de texto, pero al abrir el archivo me muestra unos caracteres raros, les agradezco mucho su ayuda:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. using namespace std;
  4.  
  5. struct instruccion{
  6.     char *inst;
  7. };
  8.  
  9. instruccion nIns;
  10.  
  11. FILE *prueba;
  12.  
  13. int main(){
  14.  
  15.     prueba=fopen("prueba.txt","a+");
  16.     //cin>>nIns.inst;
  17.     nIns.inst="00100100";
  18.     fwrite(&nIns,sizeof(nIns),1,prueba);
  19.     fclose(prueba);
  20.     cout<<nIns.inst;
  21.  
  22. }
  #2 (permalink)  
Antiguo 10/09/2014, 00:14
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 1 mes
Puntos: 5
Respuesta: Grabar cadena constante en archivo

Hola amigo.
Bueno pues para escribir en un fiche yo por regular prefiero usar fprintf.
y bueno para pasar una constante primero debes declarar es la constante.
bueno tu código quedaría algo así.
Código C:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. using namespace std;
  5.  
  6. struct instruccion{
  7.     const char *inst;
  8. };
  9.  
  10. struct instruccion nIns;
  11.  
  12.  
  13. int main(){
  14.     FILE *prueba;
  15.     char c[15];
  16.  
  17.     prueba=fopen("prueba.txt","a");
  18.     nIns.inst = "00100100";
  19.     fprintf(prueba, "%s%s", nIns.inst, "\n");  
  20.     fclose(prueba);
  21.  
  22.  
  23.     prueba=fopen("prueba.txt","r");
  24.     while(fgets(c, (int) sizeof c, prueba) != NULL)
  25.         printf("%s", c);
  26.     fclose(prueba);
  27.  return 0;
  28. }
Bueno espero que te sirva si tienes alguna duda comenta.
Saludos.
Drewermerc.
  #3 (permalink)  
Antiguo 10/09/2014, 14:55
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 7 meses
Puntos: 83
Respuesta: Grabar cadena constante en archivo

Y ya que estas en c++ tienes la otra opcion de crear tu sobrecarga de operadores para la estructura, o aun mas simple puedes usar una clase en vez de una estructura.

Personalmente soy bastante malo en c++ pero la sobrecarga del << para la struct sería algo asi:

Código C++:
Ver original
  1. ostream& operator << (ofstream &ofs, struct instruccion &nins) {
  2.     ofs << nins.inst;
  3.     return ofs;
  4. }
  5.  
  6. //la llamada es lo normal en ofstring <<
  7. ofstream prueba;
  8.  
  9. nIns.inst="00100100";
  10. prueba.open("prueba.txt");
  11. prueba << nIns;
  12. prueba.close();

Sería lo equivalente a C de tener una funcion especializada de esa struct que escriba sus campos segun sea necesario, es decir, sería lo que te ha dicho Drewermerc pero exportado a una funcion independiente dedicada a esa struct, que traducido a c++ sería un metodo de volcado de los campos de la clase; que si le echas un par de vistazos veras que exactamente lo mismo.

Saludos
vosk

Etiquetas: cadenas, constantes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:22.