Estoy tratando de averiguar cómo comprobar si un personaje es igual a espacio en blanco en C. sé que las pestañas son '\t' y las nuevas líneas son '\n', pero quiero ser capaz de comprobar sólo un regular el espacio normal (desde el espacio-bar) en el interior de un if declaración.

¿Alguien sabe cuál es el carácter de esta?

  • char a = ' '; espacio es el carácter
  • Vale la pena leer, este
  • Parece que todo el mundo está olvidando que 'a' tiene el tipo int en C.
  • Yo no tenía ni idea de que C y C++ en desacuerdo en esto!
  • Pero en realidad no afectar las respuestas.
  • Eso afecta el uso correcto de isspace(), isblank(), etc. Estas funciones no están definidas para char, pero para int valores en la unsigned char gama y EOF. Pasar un char el cual es firmado frente a una int pueden tener resultados diferentes dependiendo de cómo la int valor fue asignado.
  • y pensar, he buscado en google y llegué hasta aquí.

InformationsquelleAutor Cesar A | 2015-05-04

7 Comentarios

  1. 43

    No hay ningún símbolo en particular para los espacios en blanco. Es en realidad un conjunto de algunos de los personajes que son habitualmente:

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

    Uso isspace de la biblioteca estándar de la función de ctype.h si desea comprobar por cualquiera de estos espacios en blanco.

    Para sólo un espacio, el uso ' '.

    • isspace volvería afirmativa para '\t', que el OP no quiere.
    • Asumiendo que él quiere para comprobar todos los caracteres de espacio en blanco, y no sólo en el espacio.
    • El título de la pregunta dice blanco. Tal vez es tiempo para educar a la OP sobre la diferencia entre el carácter de espacio, y el conjunto de caracteres que se consideran para ser un espacio en blanco.
  2. 8

    El carácter de la representación de un Espacio es simplemente ' '.

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

    Pero si usted está realmente en busca de todos los espacios en blanco, entonces C tiene una función (en realidad es a menudo una macro) para que:

    #include <ctype.h>
    ...
    
    void foo (const char *s)
    {
        char c;
        ...
        if (isspace(c))
            ...
    }

    Usted puede leer acerca de isspace aquí

    Si usted realmente quiere coger todos los caracteres no imprimibles, la función a utilizar es isprint de la misma biblioteca. Se ocupa de todos los personajes por debajo de 0x20 (el código ASCII de un espacio) y por encima de 0x7E (0x7f es el código para DEL, y por encima de todo, que es una extensión).

    En raw este código es equivalente a:

    if (c < ' ' || c >= 0x7f)
        //Deal with non-printing characters.
    • Pedante: char c; ... if (isspace(c)) es UB cuando c < 0. Podría utilizar if (isspace((unsigned char) c))
  3. 5

    El valor ASCII de Space es de 32. Así que usted puede comparar su char para el valor octal de 32 que es de 40 o su valor hexadecimal, que es de 20.

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

    o

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

    Cualquier número después de la \ se supone que para ser octal, si el carácter justo después de \ no es x, caso en el cual se considera un hexadecimal.

    • '\40', '\x20', 32, ' ' son todos absolutamente la misma en un ASCII basado en C aplicación. El mismo tipo (int). El mismo valor. La misma representación interna. El mismo (si existe) de relleno. El mismo (si existe) de la trampa de las representaciones. De los 4, sólo el último está garantizado para representar un espacio en cada equipo con una implementación en C, ya sea basado en ASCII o EBCDIC o KLINGON-basado.
  4. 3

    Ninguna secuencia de escape especial se requiere: sólo se puede escribir directamente:

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

    En ASCII, el espacio es el código de 32, por lo que podría especificar el espacio por '\x20' o incluso 32, pero de verdad que no se debe hacer.

    De lado: la palabra «espacio en blanco» es un cajón de sastre para el espacio, tabulador, nueva línea, y todo eso. Cuando se refiera específicamente a la asamblea general ordinaria carácter de espacio, no debería usar el término.

  5. 1

    hacer uso de la función isspace .

    La biblioteca de C de la función int isspace(int c) comprueba si el pasado
    carácter de espacio en blanco.

    código de ejemplo:

        int main()
        {
    
           char var= ' ';
    
           if( isspace(var) )
           {
              printf("var1 = |%c| is a white-space character\n", var );
           }
    /*instead you can easily compare character with ' '  
      */     
        }
    Estándar de caracteres de espacio en blanco se − 
    
    '' (0x20) espacio (SPC) 
    '\t' (0x09) horizontal tab (PESTAÑA) 
    '\n' (0x0a) salto de línea (LF) 
    '\v' (0x0b) tabulación vertical (VT) 
    '\f' (0x0c) alimentación (FF) 
    '\r' (0x0d) retorno de carro (CR) 
    
    

    fuente : tutorialpoint

  6. 1

    Para comprobar un símbolo de espacio que usted puede utilizar el siguiente enfoque

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

    Para comprobar un espacio y/o una ficha de símbolos (estándar de caracteres en blanco) puede utilizar el siguiente enfoque

    #include <ctype.h>
    
    //...
    
    if ( isblank( c ) ) { /*...*/ }

    Para comprobar un espacio en blanco se puede utilizar el siguiente enfoque

    #include <ctype.h>
    
    //...
    
    if ( isspace( c ) ) { /*...*/ }
  7. 0
    #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;
      }
     }
    }
    • Esa no es la manera de responder a una pregunta, y esa no es la manera de escribir una función main() el prototipo de cualquiera.

Dejar respuesta

Please enter your comment!
Please enter your name here