84 votes

Est-il possible d'imprimer uniquement une certaine section d'une chaîne C, sans créer une sous-chaîne séparée ?

Disons que j'ai les éléments suivants :

 char* string = "Hello, how are you?";

Est-il possible d'imprimer uniquement les 5 derniers octets de cette chaîne ? Qu'en est-il des 5 premiers octets seulement ? Existe-t-il une variation de printf qui permettrait cela ?

146voto

Robᵩ Points 50501

Est-il possible d'imprimer uniquement les 5 derniers octets de cette chaîne ?

Oui, il suffit de passer un pointeur sur l'avant-dernier caractère. Vous pouvez le déterminer par string + strlen(string) - 5 .

Qu'en est-il des 5 premiers octets seulement ?

Utilisez un spécificateur de précision : %.5s

 #include <stdio.h>
#include <string.h>
char* string = "Hello, how are you?";

int main() {
  /* print  at most the first five characters (safe to use on short strings) */
  printf("(%.5s)\n", string);

  /* print last five characters (dangerous on short strings) */
  printf("(%s)\n", string + strlen(string) - 5);

  int n = 3;
  /* print at most first three characters (safe) */
  printf("(%.*s)\n", n, string);

  /* print last three characters (dangerous on short strings) */
  printf("(%s)\n", string + strlen(string) - n);
  return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X