ole1990 Posted September 26, 2012 at 05:56 PM Report #476675 Posted September 26, 2012 at 05:56 PM (edited) Boa tarde pessoal. Queria saber como faço para tirar a linha que contem " valor_letras[index]=0;" Uma vez que normalmente o char tem no final um 0, mas o problema é que se a tiro ele apresenta-me um numero qualquer do diferente que introduzi. O objectivo do programa é converter um char para um int (tenho mesmo de utilizar o ciclo while e acho que é aí que tenho o erro. #include <stdio.h> int String2Inteiro(char string[]){ int numero = 0; int contador = 0; while(string[contador] != 0){ numero = numero * 10 + string[contador] - '0'; contador++; } return numero; } int main(void) { char valor_letras[10]; char temp; int valor = 0; int index = 0; printf("introduza um valor \n"); temp = getchar(); while(temp != '\n'){ valor_letras[index] = temp; index++; temp = getchar(); } valor_letras[index]=0; valor = String2Inteiro(valor_letras); printf("o numero em inteiro é: %d \n", valor); return 0; } Edited September 26, 2012 at 05:57 PM by ole1990
HappyHippyHippo Posted September 26, 2012 at 05:58 PM Report #476676 Posted September 26, 2012 at 05:58 PM tenta adicionar o código num modo alternativo de edição do post porque senão é impossível ler IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted September 26, 2012 at 06:05 PM Report #476677 Posted September 26, 2012 at 06:05 PM (edited) Queria saber como faço para tirar a linha que contem "valor_letras[index]=0;" Inicializa o array completo a zeros /* ... */ int main(void) { char valor_letras[10] = {0}; /* ... */ Edited September 26, 2012 at 06:05 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
HappyHippyHippo Posted September 26, 2012 at 06:11 PM Report #476678 Posted September 26, 2012 at 06:11 PM (edited) Queria saber como faço para tirar a linha que contem " valor_letras[index]=0; bem, normalmente é recorre à tecla delete ou o backspace ... eu percebi o teu problema. a olhar para o código é que estás a iniciar o valor a 0 e a primeira coisa que fazes dentro do função é verificar o valor no while. no entanto esta afirmação é estranha : Uma vez que normalmente o char tem no final um 0 ... achei curioso existir um tópico bem recente com código muito semelhante ... https://www.portugal-a-programar.pt/topic/56270-string-para-inteiro/ Edited September 26, 2012 at 06:13 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
ole1990 Posted September 26, 2012 at 06:45 PM Author Report #476681 Posted September 26, 2012 at 06:45 PM É porque deve ser da mesma faculdade do que eu (ISEP). Imaginando um variável do tipo "char" char valor_letras[10]; Ele vai criar um vector com 10 posições. Se introduzimos um valor la dentro, imaginando 145 O vector não vai ter: 1 4 5 0 Sendo que o 0 é o que o "C" coloca "automaticamente" no final dos chars?
HappyHippyHippo Posted September 26, 2012 at 07:46 PM Report #476686 Posted September 26, 2012 at 07:46 PM (edited) não. char valor; valor = 145; // isto deverá dar um warning de atribuição de um valor fora da gama de um, char [128 .. 127] printf("Valor : %d\n", valor); // isto faz o output >> "Valor : -111", porque 145 converte em -111 em binário de 8 bits no que toca à questão de um array: char lista[5] = {0}; // {0, 0, 0, 0, 0} lista[0] = 60; // {60, 0, 0, 0, 0} lista[1] = 61; // {60, 61, 0, 0, 0} lista[2] = 62; // {60, 61, 62, 0, 0} lista[3] = 63; // {60, 61, 62, 63, 0} lista[4] = 64; // {60, 61, 62, 63, 64} printf("Valor em 0 : %d ( %c )\n", lista[0]); // output >> "Valor em 0 : 60 ( a )" printf("Valor em 1 : %d ( %c )\n", lista[1]); // output >> "Valor em 1 : 61 ( b )" printf("Valor em 2 : %d ( %c )\n", lista[2]); // output >> "Valor em 2 : 62 ( c )" printf("Valor em 3 : %d ( %c )\n", lista[3]); // output >> "Valor em 3 : 63 ( d )" printf("Valor em 4 : %d ( %c )\n", lista[4]); // output >> "Valor em 4 : 64 ( e )" Edited September 26, 2012 at 07:47 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now