Converti una stringa in numero intero in C

Jinku Hu 12 ottobre 2023
  1. Funzione atoi() per convertire una stringa in un numero intero in C
  2. Funzione strtol() per convertire una stringa in un numero intero in C
  3. Funzione strtoumax() per convertire una stringa in un numero intero in C
Converti una stringa in numero intero in C

Questo articolo introduce diversi metodi in un linguaggio di programmazione C per convertire una stringa in un numero intero. Esistono diversi metodi per convertire una stringa in un intero in C come atoi(), strtoumax() e strol().

Funzione atoi() per convertire una stringa in un numero intero in C

La funzione atoi() converte una stringa in un numero intero nel linguaggio di programmazione C. La funzione atoi() trascura tutti gli spazi bianchi all’inizio della stringa, converte i caratteri dopo gli spazi bianchi e poi si ferma quando raggiunge il primo carattere non numerico.

La funzione atoi() restituisce la rappresentazione intera della stringa.

Dobbiamo includere l’intestazione <stdlib.h> per utilizzare la funzione atoi().

atoi() Sintassi

int atoi(const char *str);

*str è un puntatore a una stringa da convertire in un numero intero.

Codici di esempio atoi()

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
  int value;
  char str[20];
  strcpy(str, "123");
  value = atoi(str);
  printf("String value = %s, Int value = %d\n", str, value);

  return (0);
}

Produzione:

String value=123, Int value=123

Funzione strtol() per convertire una stringa in un numero intero in C

La funzione strtol() converte una stringa in un intero lungo nel linguaggio di programmazione C. La funzione strtol() omette tutti i caratteri spazi bianchi all’inizio della stringa, dopo aver convertito i caratteri successivi come parte del numero, e poi si ferma quando trova il primo carattere che non è un numero.

La funzione strtol() restituisce la rappresentazione del valore intero lungo di una stringa.

Dobbiamo includere l’intestazione <stdlib.h> per utilizzare la funzione atoi().

strtol() Sintassi

long int strtol(const char *string, char **laststr, int basenumber);
  • *string è un puntatore a una stringa da convertire in un intero lungo.
  • **laststr è un puntatore per indicare dove si ferma la conversione.
  • basenumber è la base con la gamma di [2, 36].
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
  char str[10];
  char *ptr;
  long value;
  strcpy(str, " 123");
  value = strtol(str, &ptr, 10);
  printf("decimal %ld\n", value);

  return 0;
}

Produzione:

decimal 123

Funzione strtoumax() per convertire una stringa in un numero intero in C

La funzione strtoumax() interpreta il contenuto di una stringa come sotto forma di un numero intero della base specificata. Omette qualsiasi carattere di spazio vuoto fino al primo carattere diverso da spazio. Sono quindi necessari il maggior numero di caratteri possibile per formare una rappresentazione di numero intero di base valida e li converte in un valore intero.

strtoumax() restituisce il valore intero corrispondente di una stringa. Questa funzione restituisce 0 se la conversione non viene eseguita correttamente.

strtoumax() Sintassi

uintmax_t strtoumax(const char* string, char** last, int basenumber);
  • *string è un puntatore a una stringa da convertire in un intero lungo.
  • **last è un puntatore per indicare dove si ferma la conversione.
  • basenumber è la base con la gamma di [2, 36].

strtoumax() Esempio

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
  char str[10];
  char *ptr;
  int value;
  strcpy(str, " 123");
  printf("The integer value:%d", strtoumax(str, &ptr, 10));

  return 0;
}

Produzione:

The long integer value: 123
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Articolo correlato - C String

Articolo correlato - C Integer