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