2011-04-27 6 views
0

Mon tableau Char permet à un utilisateur d'entrer une chaîne purement numérique, stockant ainsi chaque chiffre dans son propre espace tableau. J'ai besoin d'assigner chaque élément du tableau char à l'emplacement correspondant dans le tableau int. Comment puis-je stocker le numéro réel plutôt que l'équivalent ASCIIRemplir le tableau int avec un tableau char complet de nombres dans C (tableau char en tableau int)

ex. si j'entre 9 comme la chaîne, je ne veux pas 57 (la valeur ASCII), mais le chiffre 9.

int main() 
{ 

    int x[256] = {0}; 
    int y[256] = {0}; 

    char temp1[256] = {0}; 
    char temp2[256] = {0}; 

    char sum[256] = {0}; 
    printf("Please enter a number: "); 
    scanf("%s", &temp1); 

    printf("Please enter second number: "); 
    scanf("%s", &temp2); 

    for(i=0; i<256; i++) 
    { 
     x[i] = ((int)temp1[i]); 
     y[i] = ((int)temp2[i]);   
    } 

Répondre

2

Change:

x[i] = ((int)temp1[i]); 
    y[i] = ((int)temp2[i]);   

à:

x[i] = temp1[i] - '0'; 
    y[i] = temp2[i] - '0';   

Remarque que vous devez également corriger vos appels scanf - changer:

printf("Please enter a number: "); 
scanf("%s", &temp1); 

printf("Please enter second number: "); 
scanf("%s", &temp2); 

à:

printf("Please enter a number: "); 
scanf("%s", temp1); 

printf("Please enter second number: "); 
scanf("%s", temp2); 
+0

Cest brillant, pourquoi bien avons-nous besoin de soustraire le '0' du charbon? btw, qui l'a réparé, merci – fifamaniac04

+3

Oh j'ai compris le pourquoi. Lorsque nous stockons le char 9 dans la chaîne, il le stocke comme l'ASCII 57, en soustrayant le caractère 0 (ASCII 48) aboutira à '9' et cette valeur est alors stockée dans l'entier. Merci encore! – fifamaniac04

0
int main(void) { 
int x = 0; 
int y = 0 
char input[12] = {0}; --->initialize var input 


scanf("%s", &input[0]); 
int ch_len = strlen(input)/sizeof(char); --create length of input[] array 
int digit[ch_len]; --->initialize digit which size is how many character in input[] array 
fflush(stdin); 

while (input[y] != '\0') { 
if (isdigit(input[y])) { 
    digit[x++] = input[y++]-'0'; 
    count++; 
} 
else y++; 
} 
}