1
This code is from a simple register of people, containing code and name of the person. I am confused about the passage from the struct vector to the "insert procedure".
When compiling, the program stops working. In the compiler I have the following error: "Program Received Signal sigsegv Segmentation fault". I saw that this error has something to do with incorrect reference to a pointer, but I don’t know how to fix it.
Follows the code:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
struct pessoas
{
	int codigo;
	char nome [50];
};
	struct pessoas vetpessoas[5];
	int k = 0;
void inserir (struct pessoas *vetpessoas, int *k)
{
	char nomeaux [50];
	int codaux, i, j;
	char resp, resp1;
	
	resp = 's';
	
	if (*k > 0)
	{
		i = *k;
	}
	else 
	{
		i = 0;
	}
	
	do
	{
		do
		{
			printf ("Entre com o codigo:");
			scanf("%i",codaux);
		}
		while (codaux < 0);
		
		do
		{
			printf ("Entre com o nome:");
			scanf ("%s",nomeaux);
		}
		while (nomeaux == "");
		
		do
		{
			j = j+1;
		}
		while (codaux != vetpessoas[j].codigo && j<i);
		
		if (j==i)
		{
			do
			{
				printf("Confirma a inclusao (S/N) ?");
				scanf ("%s",resp1);
			}
			while (resp1!='s' || resp1!='n');
			
			if (resp1 =='s')
			{
				vetpessoas[i].codigo = codaux;
				strcpy(vetpessoas[i].nome, nomeaux);
				printf ("Inclusao efetuada com sucesso!");
			}
			else 
			{
				printf ("Codigo ja cadastrado!");
				i = i-1;
			}
		}
		
		if (i < 4)
		{
			do
			{
				printf("Deseja continuar incluindo (S/N) ?");
				scanf("%c",resp);
			}
			while (resp1!='s' || resp1!='n');
		}
		i = i+1;
	}
	while (resp=='s' && i<=4);
	
	*k = i;
	
	if (i > 4)
	{
		printf ("Vetor já está Cheio! Não é permitido mais armazenar valores!!!");
	}
}
main ()
{	
    inserir (vetpessoas, &k);
	return 0;
}
One of the problems I see is that the code is too confusing, it seems to have a lot of unnecessary things, which makes it easier to make mistakes. Do you have any reason to do all this or is it a mistake too?
– Maniero
If you refer to "do while" is that the program needs to check each data entry, this ended up getting extensive.
– Julia Edwiges de Freitas
No, I mean a lot of things, and that check is not enough, I still don’t get other possible mistakes. And I started to rewrite but a flaw in the Internet made me lose and I didn’t want to do it again, because to fix it would change so much that it would misread your code, the way you are I think you will learn a lot of things the wrong way, not worth touching it, I’m sorry. Just to get an idea my code is already almost 1/3 the size of yours.
– Maniero
Yes, there is still a lot that is not being validated. In fact the code is adapted from an algorithm that the teacher passed. I imagine your version is much more simplified. Thank you for your willingness to help.
– Julia Edwiges de Freitas