Jump to content
Fórum Script Brasil
  • 0

Falha de segmentação


Felipe Nóbrega
 Share

Question

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!

Edited by Felipe Nóbrega
¹ Localizei um erro na função scanf(). Eu esqueci de inserir o & para chamar a variável.
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...