2017-09-14 2 views
-3

J'ai un tableau de caractères qui est de la forme:Comment obtenir « sous-chaîne » à partir d'un tableau de caractères en C

[17 caractères, un onglet char, 17 caractères, un onglet char, 17 caractères, un onglet char, un caractère représentant un nombre compris entre 1 et 4 chiffres, null-byte]

Je souhaite stocker les caractères situés entre le caractère tab et l'octet nul dans une nouvelle variable.

Exemple 1: Ce pourrait être mon omble chevalier Tableau:

[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6 , 7, \ t, 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7, \ t, 1,2,3,4 , 5,6,7,8,9,0,1,2,3,4,5,6,7, \ t, 3,4, \ 0]

Et je voudrais sauver l'int 34 dans une variable appelée x.

Exemple 2: Ce pourrait être mon omble chevalier Tableau:

[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6 , 7, \ t, 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7, \ t, 1,2,3,4 , 5,6,7,8,9,0,1,2,3,4,5,6,7, \ t, 5,9,9, \ 0]

Et je voudrais sauver le int 599 dans une variable appelée x.

Je peux le faire facilement si je connais le nombre de chiffres de ce nombre, mais je ne suis pas sûr de savoir comment résoudre le problème d'avoir un nombre de longueur inconnue.

Toute aide serait grandement appréciée.

+0

Recherchez 'memcpy()'. –

+0

Merci, mais à la lecture de la documentation pour memcpy(), il semble que vous ne pouvez pas choisir un index de départ autre que 0 (ie vous ne pouvez obtenir que les n premiers caractères de la chaîne), plutôt que n et l'indice b. – Mathboy

+0

Bien sûr, vous pouvez, via l'arithmétique du pointeur. Ajoutez simplement 'a' à la valeur du pointeur. –

Répondre

0

Disons que votre chaîne (alias char tableau) est pointé par str, puisque vous semblez avoir besoin de ce numéro dans un int vous pouvez utiliser atoi(str + 3 * (17 + 1)) pour obtenir ce que vous voulez.

Si vous voulez que dans une autre chaîne, vous pouvez utiliser strcpy(str2, str + 3 * (17 + 1)) en supposant que votre tampon est pointé par str2.

btw, vous devez inclure stdlib.h pour atoi() et string.h pour strcpy().