In this post I inform you of the publication of another C example program:
This time I dealt with the string-integer and the integer-string conversion.

In questo post vi informo della pubblicazione di un altro programma d'esempio in C:
Questa volta mi sono occupato della conversione tra stringa-intero e intero-stringa.

Example program in C, string-integer and integer-string conversion

Hello folks, today I inform you of the publication of another example after a week of absence.
In this other C program example we're going to see a simple implementation of the string-integer conversion and integer-string conversion.
Even though functions like these already exist in the standard library, the purpose of this post is to show a possible implementation (possible, not actual).

First let's talk about the stringToInteger function:
It uses two parameters:

  • A pointer to string (const char*)
  • A pointer to an integer (int*)

This function first performs a check on the parameters: It checks that the string is well-formed (that is, it has only digits characters and starts with either '+', '-' or a digit character) and that the pointer to integer actually points somewhere.
If this check is passed, then the function performs a cycle with the purpose to convert every single character into its integer counterpart.
In the end, every digit is multiplied by a power of 10 (depending on the current position in the string) and added to the location pointed by the integer pointer.

Now, for the integerToString function use the following parameters:

  • A number (int)
  • A pointer to string (char*)

First checks that the pointer to string is a valid pointer.
If the check is passed, then it uses the base conversion to add the digits to the string.
The function divides the provided number by 10 (the base) until the dividend becomes 0, after every division the remainder is taken, converted to its character counterpart and added to the string.
As you may know though, this operation returns the digits backwards in respect to the original number, so, the purpose of the last cycle is to exchange characters in the string to correct this problem.

See you next time guys.

Go back to the top or Share.

Programma d'esempio in C, conversione stringa-intero e intero-stringa

Salve gente, oggi vi informo della pubblicazione di un altro esempio dopo una settimana di assenza.
In quest'altro programma d'esempio in C vedremo una semplice implementazione della conversione stringa-intero e della conversione intero-stringa.
Anche se funzioni del genere già esistono nella libreria standard, l'obiettivo di questo post è mostrare una possibile implementazione (possibile, non quella usata sul serio).

Dapprima parliamo della funzione stringToInteger:
Questa utilizza due parametri:

  • Un puntatore a stringa (const char*)
  • Un puntatore ad intero (int*)

Questa funzione prima effettua un controllo sui parametri: Si accerta che la stringa sia ben formata (ovvero, che abbia solo caratteri cifra e che inizi con '+', '-' o con un carattere cifra) e che il puntatore ad intero punti a qualcosa.
Se il controllo viene superato, allora la funzione effettua un ciclo con l'obiettivo di convertire ogni singolo carattere nella sua controparte intera.
Infine, ogni cifra viene moltiplicata per una potenza di 10 (in base alla posizione attuale nella stringa) e aggiunta alla locazione puntata dal puntatore ad intero.

Ora, la funzione integerToString usa i seguenti parametri:

  • Un numero (int)
  • Un puntatore a stringa (char*)

Dapprima controlla che il puntatore a stringa sia valido.
Se il controllo passa, allora utilizza la conversione di base per aggiungere le cifre alla stringa.
La funzione divide il numero fornito per 10 (la base) finché il dividendo non diventa 0, dopo ogni divisione viene preso il resto, convertito nella sua controparte carattere e aggiunto alla stringa.
Come probabilmente saprete, quest'operazione restituisce le cifre al contrario rispetto al numero originale, perciò, l'obiettivo dell'ultimo ciclo è scambiare i caratteri nella stringa per correggere questo problema.

Ci si vede alla prossima ragazzi.

Torna in cima o Condividi.