Quelle est la différence entre% c et% s en C

Quand utiliser% s au lieu de% c. Par exemple:

#include  #include  int main(void) { char name[31] = "My name is Arnold"; printf(" %c \n", name); return 0; } 

Si je change% c en% s, je reçois: Mon nom est Arnold, mais si je modifie% s en% c, j’obtiens quelque chose d’étrange comme celui-ci:

  

Passer des arguments incorrects à des spécificateurs de format est un comportement indéfini . Par conséquent, vous obtenez une sortie aussi étrange.

  1. "%s" attend un pointeur sur une chaîne terminée par un caractère nul ( char* ).

  2. "%c" attend un caractère ( int ). Surpris? Lisez ceci .

Pour imprimer le nième caractère du name , utilisez

 printf(" %c \n", name[n]);