Segmentation fault (core dumped)

mentevouta

hola, estoy resolviendo un problema de una materia y al correr en programa despues de ingresar alguos datos me da Segmentation fault (core dumped)

este es el codigo:
#include <iostream>
#include <cstring>
#include <clocale>
using namespace std;
struct persona{
char nombre[15];
char municipio[15];
int AA;
char telefono[10];
};
int main() {
setlocale(LC_ALL, "spanish");
int n=0, j;
char stop[10]="x";
persona amigo[n];
do{
cout<<"***Informacion del Paciente "<<n+1<<" ***"<<endl;
cout<<"\nNombre: ";
cin>>amigo[n].nombre;
j=strncmp(amigo[n].nombre,stop, 2);

	cout<<"Municipio: ";
	cin>>amigo[n].municipio;
	cout<<"Año de Nacimiento: ";
	cin>>amigo[n].AA;
	cout<<"Telefono: ";
	cin>>amigo[n].telefono;
	cout<<"---------------------------------"<<endl;
	n=n+1;
}while(n!=-1);
	cout<<"**Positivos en Covid mayores a 60 años**"<<endl;
cout<<"\t Nombre";
cout<<"\t Municipio\n\n";
for(int i=0; i<=n; i++){
	if(amigo[i].AA<=1960 ){
		cout<<"\t"<<amigo[i].nombre;
		cout<<"\t"<<amigo[i].municipio<<"\n\n";
	}
}
return 0;

}

EnderFX

Te da el error al ejecutar el programa o en algún punto concreto?

Formateado un poco mejor.

#include <iostream>


#include <cstring>


#include <clocale>

using namespace std;
struct persona
{
	char nombre[15];
	char municipio[15];
	int AA;
	char telefono[10];
};
int main()
{
	setlocale(LC_ALL, "spanish");
	int n = 0, j;
	char stop[10] = "x";
	persona amigo[n];
	do {
		cout << "***Informacion del Paciente " << n + 1 << " ***" << endl;
		cout << "\nNombre: ";
		cin >> amigo[n].nombre;
		j = strncmp(amigo[n].nombre, stop, 2);

	cout << "Municipio: ";
	cin >> amigo[n].municipio;
	cout << "Año de Nacimiento: ";
	cin >> amigo[n].AA;
	cout << "Telefono: ";
	cin >> amigo[n].telefono;
	cout << "---------------------------------" << endl;
	n = n + 1;
} while (n != -1);
cout << "**Positivos en Covid mayores a 60 años**" << endl;
cout << "\t Nombre";
cout << "\t Municipio\n\n";
for (int i = 0; i <= n; i++)
{
	if (amigo[i].AA <= 1960)
	{
		cout << "\t" << amigo[i].nombre;
		cout << "\t" << amigo[i].municipio << "\n\n";
	}
}
return 0;
}
enin

Para empezar no me acuerdo bien de si se puede declarar el tamaño de un array con una variable o tenías que poner a pelo el integer, hace mucho que no toco C/C++

De todas formas, cuando declaras el array de amigos lo haces con un tamaño n=0, así que al ingresar los datos del primero debería estar petandote, tienes que declararlo con el tamaño que vayas a usar (si son 10, pues pon 10)

Los Segmentation Fault saltan cuando accedes de forma indebida a direcciones de memoria protegidas.

1 respuesta
Ranthas
#3enin:

Para empezar no me acuerdo bien de si se puede declarar el tamaño de un array con una variable o tenías que poner a pelo el integer, hace mucho que no toco C/C++

Puede usar una variable, sí.

#3enin:

De todas formas, cuando declaras el array de amigos lo haces con un tamaño n=0, así que al ingresar los datos del primero debería estar petandote, tienes que declararlo con el tamaño que vayas a usar (si son 10, pues pon 10)

Le está pasando justamente eso.

Usuarios habituales

  • Ranthas
  • enin
  • EnderFX
  • mentevouta