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

O código passa, mas dá erro de execução


maric11

Pergunta

O programa serve para só receber números inteiros.

Se a pessoa digitar uma palavra, por exemplo, ele informa que não é número e dá a possibilidade de escrever outro.

O DevC chega a compilar, ms quando entro com um dado ele trava.

Alguma ideia do que fazer?!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *str;
char str2;
int caract_fora_padrao, qp, posi_caract, comprim_string, aux, pp, procura_string_ok;
float num;

int main(){
printf("Entre com um numero:");
scanf("%c",&str);
procura_string_ok=1;
pp=0;
while ((procura_string_ok) !=0)  {
     caract_fora_padrao=0;
     qp=0;
     posi_caract=1;
     comprim_string = (strlen(str));
     while ((posi_caract <= comprim_string)and(caract_fora_padrao)==0){
           str2=("%char",str[posi_caract-1]);
           aux=("%d",*str);
           if ((aux>=48)and(aux<=57)or(aux=46)) {
                                                if (aux=46) {
                                                            qp=qp+1;
                                                            pp=posi_caract;
                                                            }
                                                }
           else {
                caract_fora_padrao = (caract_fora_padrao)+1;
                }
           posi_caract = (posi_caract)+1;
           }
     if (caract_fora_padrao>0) {
                             printf("Isso não é um numero");
                             procura_string_ok=1;
                             }
     else {
          if (qp>1) {
                  printf("Isso não é um numero");
                  procura_string_ok = 1;
                  }
          else {
               printf("Isso é um numero");
               (procura_string_ok)=0;
               }
          }
     if (procura_string_ok=1) {
                            printf("Entre com um numero");
                            scanf("%char",str);
                            }
     }
return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Qual exatamente o erro?!

@edit

Ví algumas coisas...

1) A variável str não tem comprimento, você precisa alocar memória pra ela. Solução: str = char[20];

2) Você tem que ler string, o formato é "%s" ainda sim, vale ressaltar que strings com espaços não serão tratadas da forma esperada. Solução: "%s" no lugar de "%c" para a variável str;

3) O formato "%char" não existe, é "%c", a variável str é um vetor de char, portanto na atribuição da str2, basta fazer uma atribuição simples. Solução: str2 = str[caracterequalquer];

4) Na hora da comparação (linha 23), você precisa fazer o casttype para a posição do vetor a ser testada, não do vetor inteiro. Solução: aux = (int) str[posicaoasertestada];

Editado por p4t0X
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...