Ir ao conteúdo

C como pegar o valor de uma int


Ir à solução Resolvido por Denis Bopp,

Posts recomendados

Postado

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
Postado

@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
  • Solução
Postado

Em C, eu uso o scanf pra ler do teclado:

int main(int args, char* argv[]){

	int valor;
	
	printf("Digite o valor: ");
	
	scanf("%i", &valor);

	printf("O valor digitado é %i\n", valor);

	return -1;
}

 

  • Curtir 1
  • Obrigado 1
Postado
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
Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!