à propos de isspace et isblank
Bonjour, je me suis codé une fonction qui appelle la fonction isspace (ou isblank) suivant les versions. La voici :
Code:
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 :
Citation:
implicit declaration of function `isblank'
Pourquoi ? alors que je n'ai pas ce warning avec isspace ?
2) le prototype de ces fonctions est :
Code:
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.
Re: à propos de isspace et isblank
Bonjour,
Citation:
Envoyé par salseropom
mais lorsque j'utilise isblank, mon compilo me renvoie :
Citation:
implicit declaration of function `isblank'
Pourquoi ? alors que je n'ai pas ce warning avec isspace ?
Faut lire la page man jusqu'au bout :
Citation:
Envoyé par [url=http://man.developpez.com/man3/isblank.3.php#L5
man isblank[/url]]C ANSI, BSD 4.3. isascii() est une extension BSD et SVID. isblank() est une extension GNU.