imprimir - leer cadena de caracteres en c
¿Cuál es el símbolo del espacio en blanco en C? (7)
Estoy tratando de averiguar cómo comprobar si un carácter es igual a un espacio en blanco en C. Sé que las pestañas son ''/t''
y las nuevas líneas son ''/n''
, pero quiero poder verificar solo una espacio normal (desde la barra espaciadora) dentro de una sentencia if
.
¿Alguien sabe cual es el personaje para esto?
El valor ASCII del Space
es 32. Así que puedes comparar tu carácter con el valor octal de 32, que es 40 o su valor hexadecimal, que es 20.
if(c == ''/40'') { ... }
o
if(c == ''/x20'') { ... }
Se supone que cualquier número después de /
es octal, si el carácter justo después de /
no es x
, en cuyo caso se considera que es un hexadecimal.
La representación de caracteres de un espacio es simplemente '' ''
.
void foo (const char *s)
{
unsigned char c;
...
if (c == '' '')
...
}
Pero si realmente estás buscando todo el espacio en blanco, entonces C tiene una función (a menudo es una macro) para eso:
#include <ctype.h>
...
void foo (const char *s)
{
char c;
...
if (isspace(c))
...
}
Puedes leer sobre isspace
here
Si realmente desea capturar todos los caracteres que no se imprimen, la función a utilizar es isprint
desde la misma biblioteca. Esto trata con todos los caracteres debajo de 0x20 (el código ASCII para un espacio) y arriba de 0x7E (0x7f es el código para DEL, y todo lo que está arriba es una extensión).
En código crudo esto es equivalente a:
if (c < '' '' || c >= 0x7f)
// Deal with non-printing characters.
No hay un símbolo particular para el espacio en blanco. En realidad es un conjunto de algunos caracteres que son habitualmente:
'' '' space
''/t'' horizontal tab
''/n'' newline
''/v'' vertical tab
''/f'' feed
''/r'' carriage return
Use la función de biblioteca estándar de ctype.h
desde ctype.h
si desea verificar cualquiera de estos espacios en blanco.
Para solo un espacio, use '' ''
.
No se requiere una secuencia de escape especial: simplemente puede escribir el espacio directamente:
if (char_i_want_to_test == '' '') {
// Do something because it is space
}
En ASCII, el espacio es el código 32, por lo que podría especificar el espacio con ''/x20''
o incluso con 32
, pero realmente no debería hacer eso.
Aparte: la palabra "espacio en blanco" es un truco para todo el espacio, la pestaña, la nueva línea y todo eso. Cuando te refieres específicamente al carácter de espacio ordinario, no debes usar el término.
Para comprobar un símbolo de espacio puede utilizar el siguiente enfoque
if ( c == '' '' ) { /*...*/ }
Para verificar un espacio y / o un símbolo de tabulación (caracteres en blanco estándar) puede utilizar el siguiente enfoque
#include <ctype.h>
//...
if ( isblank( c ) ) { /*...*/ }
Para comprobar un espacio en blanco puede utilizar el siguiente enfoque
#include <ctype.h>
//...
if ( isspace( c ) ) { /*...*/ }
hacer uso de la función isspace.
La función de biblioteca C int isspace (int c) verifica si el carácter pasado es un espacio en blanco.
Código de muestra:
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)
fuente: here
#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;
}
}
}