Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: javahat en 22 Mayo 2010, 02:03 am



Título: Detectar espacios en blanco.
Publicado por: javahat en 22 Mayo 2010, 02:03 am
Hola, que función en C me permite detectar espacios en blanco? por ejemplo:

Raul Martinez Perez Soleil  <----3 espacios en blanco.
Peter Memphis<----1 espacio en blanco.



Título: Re: Detectar espacios en blanco.
Publicado por: 08l00D en 22 Mayo 2010, 02:19 am
Si la queres aplicar sobre una cadena, desconozco una funcion. Si se que hay una llamada isspace que retorna verdadero si el caracter que le pasaste es un espacio. Igualmente se puede adecuar facilmente para que haga lo que vos queres. Recorres la cadena con un for y aplicando esa funcion, y contando cada aparicion de un espacio... sino busca en internet que seguro esta la funcion adecuada para que trabaje con una cadena .... pero basicamente haria eso .. tambien podrias borrar cualquier espacio "sobrante" en la cadena que no sea deseado en al comienzo y fin de la cadena...


Título: Re: Detectar espacios en blanco.
Publicado por: sch3m4 en 22 Mayo 2010, 03:18 am
Tienes tres opciones, una como bien te han dicho es usando isspace (recorres con un for la cadena y compruebas la posición actual con isspace y si es verdadero incrementas tu contador), otra es usar strchr, y otra strtok.

:http://www.opengroup.org/onlinepubs/009695399/functions/isspace.html
:http://www.opengroup.org/onlinepubs/000095399/functions/strtok.html
:http://www.opengroup.org/onlinepubs/009695399/functions/strchr.html


Título: Re: Detectar espacios en blanco.
Publicado por: .:BlackCoder:. en 22 Mayo 2010, 04:03 am
Creo que con strtok se le va a complicar un poco, cuando hayan mas de 1 espacio seguido... aunque nunca he tenido la necesidad de usar la funcion, pero si se mas o menos como funciona... Mejor usa isspace, o inventate tu mismo la funcion....


Título: Re: Detectar espacios en blanco.
Publicado por: nicolas_cof en 22 Mayo 2010, 08:43 am
Aca te dejo un codigo, para que mas o menos te des una idea...

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int
  6. main( void )
  7. {
  8.    char m[] = "Raul Martinez Perez Soleil";
  9.    int i, espacios1 = 0, espacios2 = 0;
  10.  
  11.    for ( i = 0; i < strlen( m ); ++i )
  12.    {  
  13.        if ( m[i] == 32 ) ++espacios1; // 32 = valor decimal del espacio (ascii)
  14.        if ( isspace( m[i] ) ) ++espacios2;
  15.    }  
  16.  
  17.    printf( "cadena:%s - espacios1:%d - espacios2:%d \n", m, espacios1, espacios2 );
  18.  
  19.    return 0;
  20. }

Salu10.


Título: Re: Detectar espacios en blanco.
Publicado por: javahat en 24 Mayo 2010, 16:59 pm
Gracias.