Je travaille sur mes devoirs et j’essaie d’obtenir deux caractères qui sont des nombres d’un tableau, par exemple ABC10DEF
Je veux obtenir 10
et le stocker dans un type int
.
number_holder_1 = back[3] - '0'; number_holder_2 = back[4] - '0'; number = number_holder_1 * 10 + number_holder_2;
Cela ne fonctionne pas, je ne sais pas pourquoi.
Lorsque number_holder_1
la valeur de number_holder_1
il affiche 1
et lorsque number_holder_2
il affiche 0
mais lorsque number_holder_2
number
il affiche uniquement 0
Je ne sais pas comment
METTRE À JOUR:
Le number
, number_holder_1
et number_holder_2
sont définis en tant que type int
.
le tableau back
qui détient ABC10DEF
passe du principal.
Cela semble être une erreur de mise en œuvre, car en utilisant ce que vous avez donné, avec de meilleurs noms de variables, cela fonctionne.
#include #include int letter2int(char c) { int n; if (isdigit(c)) { n = c - '0'; } else { n = -1; /* error */ } /* for debugging */ printf("For character '%c' we get number '%d'.\n", c, n); return n; } int main(int argc, char** argv) { const char str[] = "ABC10DEF"; int tens, ones; int result; tens = letter2int(str[3]); ones = letter2int(str[4]); result = tens * 10 + ones; printf("Result: %d\n", result); return 0; }
Cela peut être généralisé pour former une fonction atoi (ASCII en entier) ou extraire le premier nombre apparaissant dans une chaîne (terminé par un caractère non numérique) en utilisant une boucle et un pointeur de caractère pour indexer la chaîne str
.
En utilisant i
comme index de base zéro, result += number * (int)pow(10, i);
.