Comment convertir une chaîne de caractères en entier en C

Jinku Hu 12 octobre 2023
  1. Fonction atoi() pour convertir une chaîne de caractères en un entier en C
  2. Fonction strtol() pour convertir une chaîne de caractères en un entier en C
  3. strtoumax() Fonction pour convertir une chaîne de caractères en un entier en C
Comment convertir une chaîne de caractères en entier en C

Cet article présente différentes méthodes dans un langage de programmation C pour convertir une chaîne de caractères en un entier. Il existe plusieurs méthodes pour convertir une chaîne de caractères en un entier en C comme atoi(), strtoumax() et strol().

Fonction atoi() pour convertir une chaîne de caractères en un entier en C

La fonction atoi() convertit une chaîne de caractères en un entier dans le langage de programmation C. La fonction atoi() néglige tous les espaces blancs au début de la chaîne, convertit les caractères après les espaces blancs, puis s’arrête lorsqu’elle atteint le premier caractère non numérique.

La fonction atoi() retourne la représentation entière de la chaîne de caractères.

Nous devons inclure l’en-tête <stdlib.h> pour utiliser la fonction atoi().

Syntaxe de atoi()

int atoi(const char *str);

*str est un pointeur vers une chaîne de caractères à convertir en un entier.

atoi() Exemples de codes

#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);
}

Production :

String value=123, Int value=123

Fonction strtol() pour convertir une chaîne de caractères en un entier en C

La fonction strtol() convertit une chaîne de caractères en un entier long dans le langage de programmation C. La fonction strtol() omet tous les caractères d’espacement au début de la chaîne, après avoir converti les caractères suivants comme faisant partie du nombre, puis s’arrête lorsqu’elle trouve le premier caractère qui n’est pas un nombre.

La fonction strtol() retourne la représentation de la valeur entière longue d’une chaîne de caractères.

Nous devons inclure l’en-tête <stdlib.h> pour utiliser la fonction atoi().

Syntaxe de strtol()

long int strtol(const char *string, char **laststr, int basenumber);
  • *string est un pointeur vers une chaîne de caractères à convertir en un long entier.
  • **laststr est un pointeur qui indique où s’arrête la conversion.
  • basenumber est la base avec l’intervalle de [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;
}

Production :

decimal 123

strtoumax() Fonction pour convertir une chaîne de caractères en un entier en C

La fonction strtoumax() interprète le contenu d’une chaîne comme étant sous la forme d’un nombre entier de la base spécifiée. Elle omet tout caractère d’espacement jusqu’au premier caractère non blanc. Elle prend ensuite autant de caractères que possible pour former une représentation valide du nombre entier de la base et les convertit en une valeur entière.

strtoumax() retourne la valeur entière correspondante d’une chaîne de caractères. Cette fonction retourne 0 si la conversion n’est pas effectuée avec succès.

strtoumax() Syntaxe

uintmax_t strtoumax(const char* string, char** last, int basenumber);
  • *string est un pointeur vers une chaîne de caractères à convertir en un long entier.
  • **last est un pointeur qui indique où s’arrête la conversion.
  • basenumber est la base avec l’intervalle de [2, 36].

Exemple de strtoumax()

#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;
}

Production :

The long integer value: 123
Auteur: 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

Article connexe - C String

Article connexe - C Integer