Ir ao conteúdo
  • Cadastre-se

C Criei um código no Dev C++ que não acusa erro mas roda bugado.


Posts recomendados

#include <stdio.h>
#include <cstdlib>
 int main(void) {
    int capitulos, tempo_em_dias, previsao, totalcaps;
    char NomeNovela[20];
    printf("\n Ola! Qual novela esta assistindo? ");
    scanf("%c", &NomeNovela);
    printf("\nAdoro essa novela!! \nQual o total de capítulos? ");
    scanf("%d", &totalcaps);
    printf("\nJá está em qual capítulo? ");
    scanf("%d", &capitulos);
    printf("\nHa quantos dias esta assistindo? ");
    scanf("%d", &tempo_em_dias);
    previsao = totalcaps/(capitulos/tempo_em_dias);
    printf("\nPelo que você já assistiu de", "%c", NomeNovela, "\n");
    printf("\nPodemos concluir que você terminará em: ","%d", previsao, "  dias");
}

Criei este código primeiro no portugol que funcionou corretamente, agora aprendendo C, fiz no Dev C++ e ele não acusa erros na compilação, mas ao executar, ele não faz as perguntas pausadamente para o usuário. Após informar o nome da novela, ele põe na tela todas as perguntas e ainda retorna um valor aleatório. 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, pedroedumendes disse:
#include <stdio.h>
#include <cstdlib>

 

Isso não faz sentido. É a mesma biblioteca. A convenção em C++ ao precisar incluir um header de C, como stdlib, é tirar o .h e colocar um 'c' na frente. Se está programando em C não está programando em C++. São linguagens diferentes, muito diferentes. E se está programando em C, já que escreveu um programa C, não use cstdlib.

 

2 horas atrás, pedroedumendes disse:
    int capitulos, tempo_em_dias, previsao, totalcaps;
    char NomeNovela[20];
    printf("\n Ola! Qual novela esta assistindo? ");
    scanf("%c", &NomeNovela);

 

Não declare mais que uma variável por linha. É grátis. Juntar isso só atrapalha a leitura. Inicialize todas as variáveis.

 

scanf retorna um int. TESTE. SEMPRE. leia o manual.

 

NomeNovela é char[20]. Em C isso quer dizer que NomeNovela é o endereço de início e é isso que deve passar para scanf(). Não pode usar o operador & porque ele vai pegar o endereço de algo que já é um endereço.

 

Mais ainda, nem deve usar scanf para isso. Pelo nome dá pra ver que scanf é um scanner. scan formatted input, daí vem o nome. E o teclado não é assim formatado, certo? scanf() foi escrita para ler tabelas de muitas linhas iguais, separadas por algum delimitador. Não é para ler do teclado. Faça o muito mais simples e use fgets(). 

 

Leia o manual de scanf e entenda os especificadores, essas coisas que começam por % como "%c" e que lê UMA letrinha e não uma frase. E entenda que scanf como está usando para no primeiro espaço branco, que pode ser o fim de linha, um TAB ou um espaço e assim não vai ler um nome de mais uma palavra. E note que nada vai controlar esse tamanho de 20 e o cara pode digitar 400 e zoar todo o programa.

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!