• Inicio
  • Buscar
  • Ingresar
  • Registrarse

    ¿Sabes el motivo de que fallen tanto algunas impresoras Epson?

    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • [solucionado] contar espacios en una cadena de caracteres en C
    • Imprimir
    Páginas: [1]   Ir Abajo

    Autor Tema: [solucionado] contar espacios en una cadena de caracteres en C  (Leído 11620 veces)

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    [solucionado] contar espacios en una cadena de caracteres en C
    « en: Julio 16, 2013, 01:13:21 am »
    Hola, la cadena de caracteres tiene que terminar en punto (.) pues cuando escribo la cadena + punto me da un resultado extraño, como cuando las posiciones se llenan de basura. Entonces si frase[ i ] es igual a un espacio ' ', cont++. Si frase[ i ] es un punto '.' entonces en la posición donde está ese punto pondré el valor nulo ' \ 0' para que así anule el resto de las posiciones de la cadena.

    Al final muestro el número de cont que es el numero de espacios totales.

    Código: [Seleccionar]
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
       
    int main(int argc, char **argv)
    {   
    char frase[100];
    int i, cont;

    printf("Ingrese la frase:n");
    scanf("%s", frase);

    for(i= 0 ; i < 100 ; i++){
    if(frase[i]== ' '){
    cont++;
    }
    if(frase[i] == '.'){
    frase[i]= ' \ 0 ' ;
    break;
    }
    }
    printf("nEsta frase tiene %d espacios", cont);

    return 0;
    }

    « Última modificación: Julio 16, 2013, 02:17:43 am por r1ghtz0 »
    En línea

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    Re:[ayuda] contar espacios en una cadena de caracteres en C
    « Respuesta #1 en: Julio 16, 2013, 02:17:00 am »
    Ya lo pude solucionar, lo que sucede es que ese scanf() no me va capturar todos los elementos de la cadena tal cual, debe de colocarse de esta manera:

    Código: [Seleccionar]
    scanf("%[^\n]", frase);

    disculpen las molestias :p
    En línea

    Desconectado Raven?

    • { L0 } Ñuub
    • Mensajes: 25
    • I came to purify this world
      • Ver Perfil
    Re:[solucionado] contar espacios en una cadena de caracteres en C
    « Respuesta #2 en: Julio 27, 2013, 06:30:08 am »
    Cita de: r1ghtz0 en Julio 16, 2013, 02:17:00 am
    Ya lo pude solucionar, lo que sucede es que ese scanf() no me va capturar todos los elementos de la cadena tal cual, debe de colocarse de esta manera:

    Código: [Seleccionar]
    scanf("%[^\n]", frase);

    disculpen las molestias :p

    Disculpa la molestia amigo, pero me podrías explicar la función de esa linea de código?
    ... específicamente me interesa "%[^\n]"... qué función tiene?
    En línea

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:[solucionado] contar espacios en una cadena de caracteres en C
    « Respuesta #3 en: Julio 27, 2013, 10:38:05 am »
    Cita de: Smith en Julio 27, 2013, 06:30:08 am
    ... específicamente me interesa "%[^\n]"... qué función tiene?

    Es una expresión regular que dice que lea cualquier carácter que no sea el retorno de carro. No sé muy bien cómo funcionan las expresiones regulares con scanf, supongo que leerá de la entrada hasta que encuentre un retorno de carro.
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado Raven?

    • { L0 } Ñuub
    • Mensajes: 25
    • I came to purify this world
      • Ver Perfil
    Re:[solucionado] contar espacios en una cadena de caracteres en C
    « Respuesta #4 en: Julio 29, 2013, 06:52:19 pm »
    Ah, ya veo.

    ¿No hubiese sido más sencillo utilizar el gets?

    EDIT: Ya investigué por qué jajaja, gracias.
    « Última modificación: Julio 29, 2013, 07:47:05 pm por Smith »
    En línea

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    Re:[solucionado] contar espacios en una cadena de caracteres en C
    « Respuesta #5 en: Julio 29, 2013, 11:00:30 pm »
    Cita de: Smith en Julio 29, 2013, 06:52:19 pm
    Ah, ya veo.

    ¿No hubiese sido más sencillo utilizar el gets?

    EDIT: Ya investigué por qué jajaja, gracias.
    El gets() aveces me falla y no me captura todos los elemento, en cambio ese es más seguro y captura todo hasta que encuentre el salto de linea.
    En línea

    Desconectado Raven?

    • { L0 } Ñuub
    • Mensajes: 25
    • I came to purify this world
      • Ver Perfil
    Re:[solucionado] contar espacios en una cadena de caracteres en C
    « Respuesta #6 en: Julio 30, 2013, 01:47:13 am »
    Cita de: r1ghtz0 en Julio 29, 2013, 11:00:30 pm
    Cita de: Smith en Julio 29, 2013, 06:52:19 pm
    Ah, ya veo.

    ¿No hubiese sido más sencillo utilizar el gets?

    EDIT: Ya investigué por qué jajaja, gracias.
    El gets() aveces me falla y no me captura todos los elemento, en cambio ese es más seguro y captura todo hasta que encuentre el salto de linea.
    Pues yo entendí lo peligroso de utilizar gets y algunas otras cosas más acá:
    http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

    Recomiendo la lectura.
    En línea

    Desconectado User170294

    • { L1 } Newbie
    • *
    • Mensajes: 67
      • Ver Perfil
    Re:[solucionado] contar espacios en una cadena de caracteres en C
    « Respuesta #7 en: Julio 31, 2013, 09:31:16 pm »
    Perdona el apunte:

    En realidad tu programa no cuenta los espacios que hay en una frase u oración, sino que cuenta el número de caracteres 'espacio' en la cadena de caracteres que ingresa el usuario.

    A lo mejor no es lo que querías hacer, pero no es lo mismo ;)


    Salu2 ^_^
    En línea

    • Imprimir
    Páginas: [1]   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • [solucionado] contar espacios en una cadena de caracteres en C
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more