Dudas sobre definiciones

Al ejecutar el siguiente código me da segmentation faul alguien me podsria decir porque es:
struct mensaje{
char nombre[80];
int borrar;
int tamano;
};
struct buzonmensajes{
int nummensajes;
int mensporborrar;
long tamanobuzon;
FILE *fich;
struct mensaje vectormensajes[100];
};
struct buzonmensajes buzon;
for (int i=0;i<20;i++){
strcpy(buzon.vectormensajes.nombre,nombre);
buzon.vectormensajes.tamano=tam;
}
¿Habrá qué reservar memoria? ¿Hago masl la asignación? No lo se estoy basetante perdido si me pudieseis ayudar os lo agradecería mucho.
Respuesta
1
Bien, la verdad que el error que planteas parece depender de tu compilador, pero aquí esta un ejemplo que recién he probado y funciona, aunque como no trabajas con memoria dinámica a veces deja un problemita, mira, el programa no tiene validaciones, o sea, no quise enredarte con castings o con excepciones, solo es lo básico de lo básico, lo único que hice fue colocar el bucle dentro del main, y por supuesto DECLARAR las variables nombre y tam que usas para las asignaciones, por lo demás esta muy bien diseñado, aquí te dejo el ejemplo y disculpa la demora...
//---------------------------------------------------------------------------
#include <clx.h>
#include <stdio.h>
#include <iostream.h>
#pragma hdrstop
#define CANTIDAD 3
//---------------------------------------------------------------------------
struct mensaje
{
char nombre[80];
int borrar;
int tamano;
};
struct buzonmensajes
{
int nummensajes;
int mensporborrar;
long tamanobuzon;
FILE *fich;
struct mensaje vectormensajes[100];
};
#pragma argsused
int main(int argc, char* argv[])
{
struct buzonmensajes buzon;
char nombre[CANTIDAD];
int tam;
cout << "Inicializando los " << CANTIDAD << " usuarios ...";
for(int i = 0; i < CANTIDAD; i++)
{
cout << endl << "Nombre de usuario " << i + 1 << ": ";
cin >> nombre;
strcpy(buzon.vectormensajes.nombre,nombre);
cout << "Tamaño del buzon (Kb): ";
cin >> tam;
buzon.vectormensajes.tamano=tam;
}
cout << "Proceso terminado ..." << endl;
Sleep(2000);
cout << "Preparando la lista de usuarios ..." << endl;
Sleep(3000);
cout << "Nombre -> Tamaño del Buzon" << endl;
for(int i = 0; i < CANTIDAD; i++)
cout << buzon.vectormensajes.nombre << "->"
<< buzon.vectormensajes.tamano << endl;
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Responde pronto y dime si te ha funcionado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas