2015-05-04 15 views
23

Sto cercando di capire come controllare se un carattere è uguale allo spazio bianco in C. So che le schede sono '\t' e le nuove righe sono '\n', ma voglio essere in grado di controllare solo uno spazio normale normale (da la barra spaziatrice) all'interno di una dichiarazione if.Qual è il simbolo per lo spazio bianco in C?

Qualcuno sa qual è il carattere per questo?

+8

'char a = '';' lo spazio è il carattere – Gopi

+2

Questo è qualcosa che si potrebbe facilmente cercare su Google? Come in molte lingue, un char: '''' – Beko

+0

Vale la pena leggere [this] (http://en.wikipedia.org/wiki/Escape_sequences_in_C) – Tensibai

risposta

30

Non esiste alcun simbolo particolare per gli spazi vuoti. In realtà è un insieme di alcuni personaggi che sono abitualmente:

' '  space 
'\t'  horizontal tab 
'\n'  newline 
'\v'  vertical tab 
'\f'  feed 
'\r'  carriage return  

Usa isspace funzione di libreria standard dal ctype.h se si desidera verificare la presenza di uno qualsiasi di questi bianchi-spazi.

Per uno spazio, utilizzare ' '.

+2

'isspace' restituirebbe affermativo per' '\ t'', che l'OP non vuole. – Hurkyl

+1

Supponendo che voglia controllare tutti i caratteri dello spazio bianco, e non solo lo spazio. –

+2

@Hurkyl Il titolo della domanda dice * spazio *. Forse è ora di educare l'OP sulla differenza tra il carattere dello spazio e l'insieme di caratteri che sono considerati spazi bianchi. –

6

La rappresentazione del carattere di uno spazio è semplicemente ' '.

void foo (const char *s) 
{ 
    unsigned char c; 
    ... 
    if (c == ' ') 
     ... 
} 

Ma se siete veramente alla ricerca di tutti gli spazi, allora C ha una funzione (in realtà è spesso una macro) per questo:

#include <ctype.h> 
... 

void foo (const char *s) 
{ 
    char c; 
    ... 
    if (isspace(c)) 
     ... 
} 

Si può leggere su isspacehere

Se vuoi veramente catturare tutti i caratteri non stampabili, la funzione da utilizzare è isprint dalla stessa libreria. Questo riguarda tutti i caratteri sotto 0x20 (il codice ASCII per uno spazio) e sopra 0x7E (0x7f è il codice per DEL, e tutto sopra è un'estensione).

direttamente nel codice questo equivale a:

if (c < ' ' || c >= 0x7f) 
    // Deal with non-printing characters. 
+0

In 'foo()' mancano le informazioni sul tipo per 's'. – unwind

+0

K & R :) .. Lo aggiusterò grazie – kdopen

+0

Pedante: 'char c; ... if (isspace (c)) 'è UB quando' c <0'. Potrebbe usare 'if (isspace ((unsigned char) c))' – chux

3

Non è richiesta alcuna sequenza di escape speciale: è sufficiente digitare lo spazio direttamente:

if (char_i_want_to_test == ' ') { 
    // Do something because it is space 
} 

in ASCII, lo spazio è il codice 32, in modo da è potrebbe specificare lo spazio di '\x20' o anche 32, ma davvero non dovrebbe farlo.

A parte: la parola "spazio bianco" è un oggetto tutto per spazio, tab, newline e tutto ciò. Quando ti riferisci specificamente al carattere dello spazio ordinario, non dovresti usare il termine.

1

utilizzare la funzione isspace.

La funzione di libreria C int isspace (int c) controlla se il carattere passato è spazio bianco.

codice di esempio:

int main() 
    { 

     char var= ' '; 

     if(isspace(var)) 
     { 
      printf("var1 = |%c| is a white-space character\n", var); 
     } 
/*instead you can easily compare character with ' ' 
    */  
    } 
 
Standard white-space characters are − 

' ' (0x20) space (SPC) 
'\t' (0x09) horizontal tab (TAB) 
'\n' (0x0a) newline (LF) 
'\v' (0x0b) vertical tab (VT) 
'\f' (0x0c) feed (FF) 
'\r' (0x0d) carriage return (CR) 

fonte: tutorialpoint

1

per controllare un simbolo spazio è possibile utilizzare il seguente approccio

if (c == ' ') { /*...*/ } 

Per controllare uno spazio e/o un simbolo di tabulazione (caratteri vuoti standard) È possibile utilizzare il seguente approccio

#include <ctype.h> 

//... 

if (isblank(c)) { /*...*/ } 

Per controllare uno spazio bianco è possibile utilizzare il seguente approccio

#include <ctype.h> 

//... 

if (isspace(c)) { /*...*/ } 
3

Il valore ASCII Space è 32. modo da poter confrontare il vostro personaggio per il valore ottale 32 che è 40 o il suo valore esadecimale che è 20.

if(c == '\40') { ... }

o

if(c == '\x20') { ... }

Qualsiasi numero dopo la \ viene considerata ottale, se il carattere appena dopo \ non è x, nel qual caso è considerato un esadecimale.

Problemi correlati