¿Cuál es la diferencia entre% c y% s en C

Cuándo usar% s en lugar de% c. Por ejemplo:

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

Si cambio% c por% s, obtengo: mi nombre es Arnold, pero si cambio% sa% c obtengo algo extraño como esto:

  

Pasar argumentos erróneos a los especificadores de formato es un comportamiento indefinido . Por lo tanto obtienes una salida tan rara.

  1. "%s" espera un puntero a una cadena terminada en nulo ( char* ).

  2. "%c" espera un carácter ( int ). ¿Sorprendido? Lee esto

Para imprimir el noveno carácter del name , use

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