Autor Tema: Ayuda con obtención de caracteres en file con C buscar palabra lenguajeC  (Leído 2299 veces)

MxForce

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Buenas, tengo una consulta. Tengo el siguiente contenido en una hoja de texto:

Hoja de texto hecha exclusivamente con fines de practica.
En esta hoja se encuentra una lista de contenidos, los cuales me es necesario obtener el central de estos.

Sea la lista: 1 uno, 2 dos, 3 tres, 4 cuatro, 5 cinco, 6 seis.

Además de tener también el siguiente parrafo:

Tengo un tema que habla de XYZ
   lineas referentes a XYZ
   lineas referentes a XYZ
Tengo un tema que habla de ABC
   lineas referentes a ABC
   lineas referentes a ABC
   asdfsdgdfgd
Tengo un tema que habla de EFG
   sdfsdfgfdgd
   sdgdfdfhgfjf
   dfhreytrhb
...

1. La primera cosa que deseo hacer con C es hacer una busqueda, osea buscar "uno" y que obtenga el numero delante que sería '1'.

2. La segunda cosa que deseo hacer es obtener todo un parrafo (lo llamaré así). Si busco Tengo un tema que habla de ABC en mi programa tiene que mostrarme todo lo que respecta a ABC y que no aparezca XYZ ni EFG.

Una manita porfa  :'(
« Última modificación: 12 de Marzo 2017, 18:02 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas en este curso hay una explicación general sobre C y el manejo de cadenas en C: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210

Este ejemplo puede servir de orientación

Código: [Seleccionar]

    /*
     * C Programa para buscar una palabra y reemplazarla con otra
     */

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

     
    /*Function to replace a string with another string*/

     

    char *rep_str(const char *s, const char *old, const char *new1)

    {
        char *ret;
        int i, count = 0;
        int newlen = strlen(new1);
        int oldlen = strlen(old);
     

        for (i = 0; s[i] != '\0'; i++)   
        {
            if (strstr(&s[i], old) == &s[i])
            {
                count++;
                i += oldlen - 1;
            }
        }

        ret = (char *)malloc(i + count * (newlen - oldlen));

        if (ret == NULL)

            exit(EXIT_FAILURE);

        i = 0;

        while (*s)

        {

            if (strstr(s, old) == s) //compare the substring with the newstring
            {
                strcpy(&ret[i], new1);
                i += newlen; //adding newlength to the new string
                s += oldlen;//adding the same old length the old string
            }
            else
            ret[i++] = *s++;
        }

        ret[i] = '\0';
        return ret;
    }

    int main(void)
    {

        char mystr[100], c[10], d[10];
        printf("Enter a string along with characters to be rep_strd:\n");
        gets(mystr);
        printf("Enter the character to be rep_strd:\n");
        scanf(" %s",c);
        printf("Enter the new character:\n");
        scanf(" %s",d);
        char *newstr = NULL;
        puts(mystr);
        newstr = rep_str(mystr, c,d);
        printf("%s\n", newstr);
        free(newstr);
        return 0;
    }

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".