Detectar espacios en blanco.

Iniciado por javahat, 22 Mayo 2010, 02:03 AM

0 Miembros y 1 Visitante están viendo este tema.

javahat

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.


08l00D

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

sch3m4

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
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

.:BlackCoder:.

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....
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




nicolas_cof

#4
Aca te dejo un codigo, para que mas o menos te des una idea...

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int
main( void )
{
   char m[] = "Raul Martinez Perez Soleil";
   int i, espacios1 = 0, espacios2 = 0;

   for ( i = 0; i < strlen( m ); ++i )
   {  
       if ( m[i] == 32 ) ++espacios1; // 32 = valor decimal del espacio (ascii)
       if ( isspace( m[i] ) ) ++espacios2;
   }  

   printf( "cadena:%s - espacios1:%d - espacios2:%d \n", m, espacios1, espacios2 );

   return 0;
}


Salu10.