Jump to content

Problema char caracter 0 no final


Recommended Posts

Posted (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 by ole1990
Posted (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 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!

Posted (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 by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted

É 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?

Posted (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 by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.