Ir ao conteúdo
  • Cadastre-se

C como pegar o valor de uma int


gabriel.fonseca
Ir à solução Resolvido por Denis Bopp,

Posts recomendados

eu estou fazendo o curso CS50 de harvard, e no curso eles utilizam a biblioteca do cs50, que não consigo baixar, então o jeito é adaptar.

no codigo em questão, o professor utiliza "get_int", não é a primeira vez que vejo esse "get" que existe no cs50, porém nunca consegui adaptar para a linguagem C padrão.

o código que estou tentando montar é o seguinte:

#include <stdio.h>

int main (void)
{
    int n;
    do
    {
        printf ("Width? ");
        char * fgets (n,4,stdin);//stdin significa que vai ler do teclado, e então, vai armazenar no "n"
    }
    while (n < 1);//só vai executar o codigo de baixo caso o valor dado pelo usuário for 1 ou maior que 1

    for (int i = 0; i < n; i++)
    {
        printf ("?");
        printf ("\n");
    }
}

o objetivo aqui é fazer o usuário digitar um número, e a partir deste numero, serão exibidas o mesmo numero de interrogações (?) na tela, porém não consigo fazer a parte de fazer o usuário digitar o numero, sempre da um erro.

eu entendo que a linha 

char * fgets (n,4,stdin);

esteja errada, porém não sei como consertar. (também não quero definir um número limite de caracteres que o usuário pode colocar, porém não sei o que fazer nesta lacuna onde o "4" fica).

se puderem me dar um caminho eu agradeço, porque estou a um tempo procurando como adaptar os comandos do "get" mas nunca consigo (também estou curioso sobre como adaptar o "get_string").

 

OBS: consegui adaptar o

get_string

para

const char

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@xidori Se você quer mesmo seguir com essa ideia eu recomendo ler no livro c completo e total sobre "declarando uma lista de parâmetros de extensão variável" na pagina 175.

Mas ao meu ver já que você é um aprendiz (não só de C, mas de tudo) eu recomendo você instalar uma VM com alguma distro leve (xubuntu ou linux mint) e fácil de usar, é usar a biblioteca origina.

https://github.com/cs50/libcs50

É só seguir os passos direitinho que da certo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 minutos atrás, xidori disse:

tem como me explicar essa linha de código aq por favor?

Estas são as variáveis que recebem a quantidade e os valores dos argumento que você receberia se digita-se o programa na linha de comando, tipo:

 soma 2 5

a primeira variável "args" recebe a quantidade de argumentos +1 e a variável "argv" é um array com os valores de cada parâmetro, argv[1]=2 e argv[2]=5, argv[0] é o nome do programa "soma".

Mas você pode usar o void, já que não precisa passar os parâmetros na linha de comando.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@xidori    você pode usar o comando fgets , mas o que ele pega é armazenado como string ,  e  converter para inteiro usando a função  atoi  ,   depois de validar os dados , pois não pode ter caracteres diferentes dos dígitos numéricos , e creio que ninguém vai digitar mais de 127 dígitos  para um número do tipo int ,   e  seu código poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
    int n;
    char* a = ( char* ) malloc( 128 * sizeof( char ) ) ;
    do
    {
        l1:
        printf("Width ? ");
        fgets(a, 127, stdin);                  // stdin significa que vai ler 
                                               // do teclado, e então, vai armazenar no "n"
        for (int i = 0; a[i] != '\n'; i++)     // percorre a string toda
        {
            if (a[i] < 48 || a[i] > 57)goto l1;// digitos numericos vão de 48 ate 57 ba tabela 
                                               // ASCII , senao volta a pegar outro numero
        }
        n = atoi(a);                           // converte  string para inteiro 
    } while (n < 1);                           // só vai executar o codigo de baixo caso o valor 
                                               // dado pelo usuário for 1 ou maior que 1

    for (int i = 0; i < n; i++)
    {
        printf("? ");
        // printf("\n");                       // pula para a linha de baixo e escreve na tela
    }
}

 

  • Obrigado 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!