Si ejecutas el ejemplo y metes una frase con espacios verás que la respuesta que te devuelve el programa únicamente incluye la primera palabra... que es justo como se espera que funcione scanf.
Hay alternativas como juguetear un poco con el scanf para que sea capaz de leer toda la línea:
Pero no es una opción segura porque no puedes controlar lo que introduce el usuario. Si tu buffer es de 10 caracteres y el usuario introduce una línea de 20 caracteres estarás pisando 11 bytes de memoria.
Siempre podrías limitar la lectura... pero la sintaxis de scanf no hace más que complicarse:
Una opción muy sencilla es leer caracter a caracter la entrada del teclado:
Código C:
Ver originalint total=0;
while( 1 )
{
total += ( c == 'e' );
}
Si no te gusta el código o te parece complejo de leer te facilito una opción más básica:
Código C:
Ver originalint total=0;
while( 1 )
{
break;
if( c == 'e' )
total++;
}
Al salir del bucle tendrás en total el número de caracteres buscado.
Un saludo.