Ir ao conteúdo
  • Cadastre-se

C Como converter de string para int


diogo moura

Posts recomendados

Olá @Mauro Britivaldo 

Perdão eu me confundi na hora de digitar era de inteiro para string

A questão pede pra soma os números dentro da string

 

uri.png.67e91e52a78a5ad1ef57569116fa3837.png

 

Eu consegui achar o resultado utilizando a função atoia, só que não foi aceito

 

Parte do código que eu fiz as conversões

 

n1 = nome[2] - 48; /*transformei os dois numeros para interios*/
n2 = nome[3] - 48;
itoa(n1, p1, 10);  /*converti para string*/
itoa(n2, p2, 10);  /* Só que parece o itoa não está mais sendo utilizado*/
strcpy(final, p1); /*E concatenei eles*/
strcat(final, p2);
n1 = atoi(final); /*Por fim tranformei ele novamente em inteiro*/
printf("%d\n", n1);

 

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

veja bem aqui

n1 = nome[2] - 48; /*transformei os dois numeros para interios*/
n2 = nome[3] - 48;

Vamos estudar estas duas Vetor: n1 e Vetor: n2.

são vetores respectivamente de 2, e 3 caracteres suponho, ou do tipo que foram declarados.

Sinceramente eu não sei o porquê de você achar que subtrair 48 no primeiro elemento do vetores os converte para inteiros. 

:tw_confounded:Acabei não entendendo e nada, olha que sou um ser humano imagina a coitada da máquina 

adicionado 8 minutos depois

Um dica: 

IsNumber= scanf(" %d",&Number);// A função scanf retona 0- se não número;

Faz um teste aí.

adicionado 12 minutos depois
chr= getchar();// retorna qualquer 1 caractere do stream input;

imagine você que scan := 0, então getchar vai e limpa até que scanf seja 1. Só isso já resolve.

adicionado 47 minutos depois

Não é a solução, porém experimento o programa abaixo

Obs.: EOF no prompt é Ctrl+Z para Microsoft Windows.

Ignore_resto_soma_int

{
   int  Total;
   int  Numero;
   char ret;

   Total= 0;
   for(ret= 1;ret;/*não preciso incrementar*/)switch(scanf("%d",&Numero)) {
      case 1: Total+= Numero;/*eh número*/
      case 0: if('\n' == getchar())ret= 0;/*não eh número e se ENTER: Termina*/break;
      case EOF: ret= 0;/*Fim-Do_aquivo*/break;
      default: puts("Doideira");
      return 0;
      }
   if(Total)printf("Resultado: %d\n",Total);
}

 

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

Esse é um problema clássico dos livros da web, historicamente poderíamos ver soluções assim: 

{
   int  Total;
   int  Numero;
   char ret;

   Total= 0;
   Continue:
   switch(scanf("%d",&Numero)) {
      case 1: Total+= Numero;/*eh número*/
      case 0: if( (ret = getchar()) == '\n' || ret == EOF )
                  goto Fim;/*não eh número e se ENTER: Termina*/
              else
                  goto Continue;
      default: puts("Doideira");
      return 0;
      }
   Fim:
   if(Total)printf("Resultado: %d\n",Total);
}

O goto faz justiça a sua fama.

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

  • 2 semanas depois...

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