# convertire solo una parte di array char in intero

**URL:** <https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036>\
**Category:** Software\
**Created:** [April 25, 2020, 12:23pm UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036 "2020-04-25T12:23:31Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gianky00](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gianky00/32/249602_2.png) [@Gianky00](https://forum.arduino.cc/u/Gianky00)\
**Post date:** [April 25, 2020, 12:23pm UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036/1 "2020-04-25T12:23:31Z")

</div>

Buongiorno,  
vorrei convertire un array di char 'data 190420' dove con 19, si indicherà il giorno, con 04 il mese e con 20 l'anno.  
purtroppo l'atoi cosi non funziona: `giorno1 = atoi(char[6]);` volevo mi stampasse 1 ed invece l'atoi converte a 0, come se stesse leggendo lettere e non numeri..  
non riesco proprio a risolverlo

---

<div class="post-metadata">

**Author:** ![ORSO2001](https://avatars.discourse-cdn.com/v4/letter/o/9e8a1a/32.png) [@ORSO2001](https://forum.arduino.cc/u/ORSO2001)\
**Post date:** [April 25, 2020, 12:34pm UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036/2 "2020-04-25T12:34:18Z")

</div>

ciao,

allora 190420 sono 6 caratteri...quindi l'array dovrà essere almeno lunga 7 (6 caratteri + 0x00 di terminazione)...quindi l'indice andrà da 0 a 5 per i caratteri "validi" mentre la èosizione 6 sraà sempre 0x00...ed infatti al atoi() dice:

> If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed and zero is returned.

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [April 25, 2020, 12:34pm UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036/3 "2020-04-25T12:34:34Z")

</div>

Scusa è, ma sai cosa fa la atoi()? ...

> The atoi() function converts the initial portion **of the string** pointed to by s to integer representation.

... ti sembra che gli stai passando una stringa terminata da 0x00?

NO, tu stai passando un CHAR ovvero un singolo elemento (_oltretutto con una sintassi che dovrebbe dare errore_)!!!

Comunque, basta sapere come sono codificati in numeri in ASCII e non serve alcuna funzione ...  
... i numeri vanno da 0x30 ('0') a 0x39 ('9') quindi quando hai un CHAR che contiene un numero espersso in ASCII basta che sottrai 0x30 e nel carattere rimane il valore numerico equivalente quindi, volendo mettere in una variabile, nel tuo caso se un campo, che chiamiamo data, contiene il valore "data 190420" basta semplicemente scrivere:

```arduino
giorno1 = data[5] - 0x30;

```

Guglielmo

_P.S.: Oltre a tutto quanto ha scritto giustamente ORSO2001 assieme a me ... 😉_

---

<div class="post-metadata">

**Author:** ![ORSO2001](https://avatars.discourse-cdn.com/v4/letter/o/9e8a1a/32.png) [@ORSO2001](https://forum.arduino.cc/u/ORSO2001)\
**Post date:** [April 25, 2020, 12:47pm UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036/4 "2020-04-25T12:47:37Z")

</div>

avevo un dubbio ed ho provato; questa scrittura da errore :

```cpp
atoi(char[6]);

```

dovrebbe essere:

```cpp
atoi(char+6);

```

PS:esattammente come dice Guglielmo...con char[6] gli passi un carattere...

---

<div class="post-metadata">

**Author:** ![Gianky00](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gianky00/32/249602_2.png) [@Gianky00](https://forum.arduino.cc/u/Gianky00)\
**Post date:** [April 25, 2020, 3:21pm UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036/5 "2020-04-25T15:21:19Z")

</div>

Ottimo, ho risolto in entrambi i modi. Grazie ORSO e Gpb 🙂

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 7, 2021, 2:20am UTC](https://forum.arduino.cc/t/convertire-solo-una-parte-di-array-char-in-intero/651036/6 "2021-05-07T02:20:24Z")

</div>

Closed on May 7, 2021, 2:20am UTC


