Ir para conteúdo
Fórum Script Brasil
  • 0

Falha de segmentação


Felipe Nóbrega

Pergunta

Olá! Eu comecei bem recentemente a ler sobre a linguagem C e estou criando alguns programas que o livro pediu como exercício. Como compilador, eu estou atualmente usando o Code::Blocks 13.12. Usava antes o DEV C++, porém o mesmo começou a fazer o programa que eu criava parar de ser executado quando eu colocava a função scanf() e ia inserir o valor. Reinstalei ele 3 vezes, em versões diferentes, não resolveu. Tentei usar o Visual Studios C++, mesmo problema, enfim... Eu fiz um programa para achar os múltiplos de um número informado pelo usuário, dentro de um intervalo também informado pelo usuário. Porém, quando insiro o primeiro valor, o compilado dá o erro: program received signal sigsegv segmentation fault. Vou mostrar o programa que eu criei para ver se tem algum erro nele, fui ler sobre o erro, mas aonde li informava que era algo relacionado a ponteiros e o programa ir buscar memória fora do limite estipulado... mas esse programa, como vocês verão, não necessita de ponteiros (eu sequer sei usar ponteiros ainda).


 

#include <stdio.h>

    int main ()
    {

    int numInicio;
    int numFinal;
    int numMultiplo;

        do
        {

        printf("###Programa para calcular a quantidade de multiplos dentro do intervalo informado.###\n");
        printf("Para parar o programa, insira <ZERO> no primeiro valor.\n");
        printf("Digite o numero inicial do intervalo: ");
        scanf("%d", &numInicio);
        printf("\nDigite o numero final do intervalo: ");
        scanf(" %d", &numFinal);
        printf("\nDigite o multiplo a ser utilizado nos calculos.");
        scanf(" %d", &numMultiplo);

            for (numInicio; numInicio < numFinal; numInicio++)
                if(numInicio > numFinal)
                    printf("\nErro: o primeiro numero não pode ser maior que o segundo. Tente novamente.");
                else
                    if(numInicio % 5 != 0)
                        continue;
                    else
                        printf("\n\t%i", numInicio);




        }

        while (numInicio == 0);
    }

 

Vale salientar que eu sequer testei o programa para verificar se ele realmente está parando quando se insere o valor <ZERO> e também que eu reconheço que estou bastante repetitivo na minha escrita, mas estou fazendo assim no início para ficar mais legível para mim, já que ainda não entendo bem a linguagem. Obrigado pela atenção!

Editado por Felipe Nóbrega
¹ Localizei um erro na função scanf(). Eu esqueci de inserir o & para chamar a variável.
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu mesmo já resolvi o problema. Era a resposta que eu achei mesmo, o sistema não estava sabendo aonde alocar o valor gerado pela função scanf() e acabava parando de responder por causa disso. O problema estava na falta do & pra chamar a variável atribuída a função scanf(). Eu não localizei esse erro antes, por que antes, quando eu errava assim, o sistema não reagia dessa forma - parando de responder - ele apenas dava como resposta o valor 0 (falso).

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...