Visual C++ .NET - saber long. de structure

 
Vista:

saber long. de structure

Publicado por HAHR (1 intervención) el 03/02/2007 00:24:45
buenas tardes, necesito que me hechen la mano tengo una estructura la cual la cargo las lienas de un archivo que leo, el problema es que aveces las lineas del archivo vienen incompletas quisiera ver si se puede por medio de la estructura obtener la longitud de la misma una vez cargada la linea del archivo leida..????

utilizo

int a;

a = sizeof(struct xx)

me da error core dump

Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener longitud de una línea leída desde un archivo en una estructura

Publicado por Alejandro (265 intervenciones) el 30/01/2024 00:39:23
¡Hola, HAHR! Entiendo que estás teniendo problemas para obtener la longitud de una estructura después de cargarla con líneas de un archivo. El error de `core dump` generalmente indica un problema de acceso a la memoria.

La longitud de una estructura no cambia después de cargarla con datos. Sin embargo, si estás leyendo líneas de un archivo y almacenándolas en una estructura, el tamaño de la estructura en memoria no te dará la longitud real de la línea leída.

Para obtener la longitud de una cadena (línea) en C++, puedes usar la función `strlen` si la línea es una cadena de caracteres terminada por '\0'. Aquí tienes un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cstring>
 
struct MiEstructura {
    char linea[100]; // ajusta el tamaño según tus necesidades
};
 
int main() {
    MiEstructura miStruct;
 
    // Cargar la estructura desde el archivo (ejemplo)
    std::ifstream archivo("miarchivo.txt");
    if (archivo.is_open()) {
        archivo.getline(miStruct.linea, sizeof(miStruct.linea));
        archivo.close();
 
        // Obtener la longitud de la línea usando strlen
        size_t longitud = strlen(miStruct.linea);
 
        std::cout << "Longitud de la línea: " << longitud << std::endl;
    } else {
        std::cerr << "Error al abrir el archivo." << std::endl;
    }
 
    return 0;
}

Asegúrate de que tu estructura contenga una cadena de caracteres (`char[]`) y utiliza `strlen` para obtener la longitud de la línea. Ajusta el tamaño del array según tus necesidades.

¡Espero que esto te sea de ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar