Bonjour, je me suis codé une fonction qui appelle la fonction isspace (ou isblank) suivant les versions. La voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
#include<ctype.h>
 
void DeleteFinalSpaces(char * s)
{
  /* this function deletes all the spaces between the last char of s which is
     not a space (a blank char) and the char '\0'
  */
  unsigned short i;
  //for(i=strlen(s)-1;s[i]==' ';--i); //1e version
  for(i=strlen(s)-1;isspace(s[i]);--i); //2e version
  //for(i=strlen(s)-1;isblank(s[i]);--i); //3e version
  s[i+1]='\0';  
}
Cette fonction me renvoie bien le résultat que je veux. Mais j'aurais deux questions : 1) dans mon shell, j'ai fait man isspace et j'ai vu qu'il fallait include ctype.h, ce qui est chose faite. Lorsque j'utilise isspace, tout va bien, mais lorsque j'utilise isblank, mon compilo me renvoie :

implicit declaration of function `isblank'
Pourquoi ? alors que je n'ai pas ce warning avec isspace ?

2) le prototype de ces fonctions est :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int isspace(int c)
int isblank(int c)
pourtant mon s[i] est un char et non un int, pourquoi est-ce que la fonction marche toujours ? Y a-t-il une conversion implicite ?

Merci.