J'essaie de voir comment vérifier si un caractère est égal à un espace blanc en C. Je sais que les tabulations sont '\t'
et les nouvelles lignes sont '\n'
, mais je veux pouvoir vérifier uniquement un espace normal -bar) à l'intérieur d'une instruction if
.
Est-ce que quelqu'un sait quel est le personnage pour cela?
Il n'y a pas de symbole particulier pour les espaces blancs. C'est en fait un ensemble de caractères qui sont habituellement:
' ' space
'\t' horizontal tab
'\n' newline
'\v' vertical tab
'\f' feed
'\r' carriage return
Utilisez isspace
fonction de bibliothèque standard à partir de ctype.h
si vous souhaitez rechercher l'un de ces espaces
Pour seulement un espace, utilisez ' '
.
La représentation des caractères d'un espace est simplement ' '
.
void foo (const char *s)
{
unsigned char c;
...
if (c == ' ')
...
}
Mais si vous recherchez vraiment tous les espaces, C a une fonction (en fait, il s’agit souvent d’une macro):
#include <ctype.h>
...
void foo (const char *s)
{
char c;
...
if (isspace(c))
...
}
Vous pouvez lire sur isspace
ici
Si vous voulez vraiment intercepter tous les caractères non imprimables, la fonction à utiliser est isprint
de la même bibliothèque. Cela concerne tous les caractères inférieurs à 0x20 (le code ASCII pour un espace) et supérieurs à 0x7E (0x7f est le code pour DEL, et tout ce qui se trouve au-dessus est une extension).
En code brut, cela équivaut à:
if (c < ' ' || c >= 0x7f)
// Deal with non-printing characters.
La valeur ASCII de Space
est 32. Vous pouvez donc comparer votre caractère à la valeur octale 32, qui est 40, ou à sa valeur hexadécimale, qui est 20.
if(c == '\40')
{ ... }
ou
if(c == '\x20')
{ ... }
Tout nombre après le \
est supposé être octal, si le caractère juste après \
n'est pas x
, auquel cas il est considéré comme un hexadécimal.
Aucune séquence d'échappement spéciale n'est requise: vous pouvez simplement taper directement l'espace:
if (char_i_want_to_test == ' ') {
// Do something because it is space
}
En ASCII, l'espace correspond au code 32. Ainsi, vous pouvez spécifiez l'espace par '\x20'
ou même 32
, mais vous ne devriez vraiment pas le faire.
De plus, le mot "espace" désigne tout ce qui est espace, tabulation, nouvelle ligne, etc. Lorsque vous vous référez spécifiquement au caractère d'espace ordinaire, vous ne devriez pas utiliser le terme.
utiliser la fonction isspace.
La fonction de bibliothèque C int isspace (int c) vérifie si le .__ transmis. le caractère est un espace blanc.
exemple de code:
int main()
{
char var= ' ';
if( isspace(var) )
{
printf("var1 = |%c| is a white-space character\n", var );
}
/*instead you can easily compare character with ' '
*/
}
Les caractères d’espace blanc standard sont − ' '(0x20) espace (SPC) '\T '(0x09) onglet horizontal (TAB) '\N '(0x0a) nouvelle ligne (LF) VT) '\ F' (0x0c) source (FF) '\ R' (0x0d) retour chariot (CR)
source: tutorialpoint
Pour vérifier un symbole d'espace, vous pouvez utiliser l'approche suivante
if ( c == ' ' ) { /*...*/ }
Pour vérifier un espace et/ou un symbole de tabulation (caractères vierges standard), vous pouvez utiliser l’approche suivante
#include <ctype.h>
//...
if ( isblank( c ) ) { /*...*/ }
Pour vérifier un espace blanc, vous pouvez utiliser l'approche suivante
#include <ctype.h>
//...
if ( isspace( c ) ) { /*...*/ }
#include <stdio.h>
main()
{
int c,sp,tb,nl;
sp = 0;
tb = 0;
nl = 0;
while((c = getchar()) != EOF)
{
switch( c )
{
case ' ':
++sp;
printf("space:%d\n", sp);
break;
case '\t':
++tb;
printf("tab:%d\n", tb);
break;
case '\n':
++nl;
printf("new line:%d\n", nl);
break;
}
}
}