Para verificar se um caractere é pontuação, utilizamos a função ispunct. Com 
                essa função podemos saber se um caractere está contido no 
                grupo (!, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, } e ~ ).
            
            Sintaxe
            int ispunct( int c );
            Onde
            c: caracter para verificar
            Retorno
            0 : c não é pontuação.
!= 0 : c é pontuação.
            Exemplo 5
            
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main ()
{
  int i;
  char string[]="1: Quem? Eu!.";
  
  long int tam = strlen(string);
  
  for(i=0 ;i < tam ; i++)
  {
    if(ispunct(string[i]))  
        printf("%c é pontuação\n",string[i]);
    else
        printf("%c não é pontuação\n",string[i]);
  }
}
            Saída
            
1 não é pontuação
: é pontuação
  não é pontuação
Q não é pontuação
u não é pontuação
e não é pontuação
m não é pontuação
? é pontuação
  não é pontuação
E não é pontuação
u não é pontuação
! é pontuação
. é pontuação