web-dev-qa-db-fra.com

Quel est le symbole des espaces en C?

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?

28
Cesar A

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 ' '.

38
haccks

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 isspaceici

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.
7
kdopen

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.

5
Sujit Menon

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.

3
Hurkyl

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

1
Tirupati Rao

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 ) ) { /*...*/ }
1
#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;
  }
 }
}
0
stpd_rssn