Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/01/2014, 06:25
PercevalCiro
 
Fecha de Ingreso: junio-2009
Mensajes: 64
Antigüedad: 15 años, 2 meses
Puntos: 6
Segmentation Fault.

Hola,
Desde ya muchas gracias por su atención. Estoy empezando en C++, ya que nunca había programado en este lenguaje.

cree una clase, que la resumo, pero es algo así:

Código C++:
Ver original
  1. #ifndef INIDICOM_H
  2. #define INIDICOM_H
  3.  
  4.  
  5. using namespace std;
  6. #include <string>
  7. using std::string;
  8. #include <cstring>
  9.  
  10. class iniDicom
  11. {
  12.  
  13.  
  14.     public:
  15.         iniDicom();
  16.         virtual ~iniDicom();
  17.  
  18.         char* getPreamble();
  19.         char* getPrefix();
  20.         char* getGroup_number();
  21.  
  22.          bool setString(char* value_var);
  23.          bool isDicom();
  24.          int  countLength();
  25.  
  26. private:
  27.         char* preamble[128];
  28.         char* prefix[4];    
  29.         char* group_number[2];
  30.  
  31.  
  32.           void asingValues(char* value_char, int iniNumber, char* value_var);
  33. };
  34. #endif // INIDICOM_H

Y tengo la implementación:

Código C++:
Ver original
  1. iniDicom::iniDicom(){
  2.    }
  3.  
  4. iniDicom::~iniDicom(){
  5. }
  6. /*getPreamble() : string
  7. */
  8. char* iniDicom::getPreamble(){
  9.         return *preamble;
  10. }
  11. /*getPrefix() : string
  12. */
  13. char* iniDicom::getPrefix(){
  14.         return *prefix;
  15. }
  16.  
  17.  
  18.  char* iniDicom::getGroup_number(){
  19.         return *group_number;
  20.   }
  21.  
  22.  
  23.  
  24. bool iniDicom::setString(char* value_var){
  25.     asingValues(*preamble, 0, value_var);
  26.  
  27.     return true;
  28. }
  29.  
  30.  
  31. void iniDicom::asingValues(char* value_char, int iniNumber, char* value_var){
  32.     int i, largo = strlen(value_char);
  33.  
  34.     for(i=0;i<largo;i++){
  35.         value_char[i] = value_var[iniNumber+i] ;
  36.     }
  37.  
  38. }
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. int iniDicom::countLength(){
  46.  
  47.     //preamble es igual a 128---> se reemplaza.
  48.     int tmp = 128 + sizeof(*prefix) + sizeof(*group_number)+ sizeof(*element_number);
  49.     tmp += sizeof(*value_representation) + sizeof(*value_length) + sizeof(*value);
  50.     return tmp;
  51.  
  52.     }
  53.  
  54.  
  55. bool iniDicom::isDicom(){
  56.    if(((string)*prefix)=="DICM"){
  57.         return true;
  58.    }else{
  59.         return false;
  60.    }
  61.  
  62. }

el problema es que cuando corro me sale "Segmentation Fault". La verdad es que no se como asignar, mi idea era, obtener de un archivo una cantidad de caracteres, meterlos en un char y después dividirlo en cada uno de los atributos. Cual creen que es la mejor forma de hacerlo?. Muchas Gracias y Saludos.