Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 19 Febrero 2015, 23:29 pm



Título: 1ra palabra de un String
Publicado por: sora_ori en 19 Febrero 2015, 23:29 pm
Hola, que tal?

Les vengo a preguntar sobre una función que me muestra la 1r palabra de un string, tengo esta función hecha, compila bien pero no muestra nada.

Código
  1. char* extraerPalabra(char frase[20]) {
  2.  
  3. char *elemento = strtok(frase, " ");
  4.  
  5. strcpy(frase, elemento);
  6.  
  7. while (elemento != NULL) {
  8.        if (!strcmp(frase, elemento)) // Comparamos las dos cadenas
  9. elemento = strtok(NULL, " ");
  10.    }
  11. return frase;
  12. }


Código
  1. case 2:
  2. printf("String mostrando la 1r palabra: ' %s '", extraerPalabra(frase));
  3. break;
  4.  


Título: Re: 1ra palabra de un String
Publicado por: vangodp en 20 Febrero 2015, 05:05 am
me parece que sobra ese if dentro de la función.
Código
  1. #include <stdio.h>
  2.  
  3. char* extraerPalabra ( char frase[20] ) {
  4.    char *elemento = strtok ( frase, " " );
  5.  
  6.    strcpy ( frase, elemento );
  7.  
  8.    while ( elemento != NULL ) {
  9.        //if ( !strcmp ( frase, elemento ) ){ // Comparamos las dos cadenas
  10.        elemento = strtok ( NULL, " " );
  11.  
  12.    }
  13.  
  14.    return frase;
  15.  
  16. }
  17.  
  18. int main () {
  19.    char frase[20] = "Hola mundo cruel.";
  20.  
  21.    printf ( "String mostrando la 1r palabra: ' %s '", extraerPalabra ( frase ) );
  22.  
  23.    getchar();
  24.    return 0;
  25. }
  26.  


Título: Re: 1ra palabra de un String
Publicado por: sora_ori en 21 Febrero 2015, 09:18 am
Gracias por la ayuda, era solamente eso!!  ;-) ;-)

Tengo otra función parecida, la de mostrar la palabra más larga del String introducido y no me funciona:



Código
  1. /* Función para mostrar la palabra más larga de una frase */
  2. char* palabraLarga(char frase[20]){
  3. char *elemento = strtok ( frase, " " );
  4.  
  5. strcpy(frase, elemento);
  6.  
  7. while ( elemento != NULL ) {
  8. if(strlen(elemento) >= strlen(frase))
  9. strcpy(frase, elemento);
  10. elemento = strtok(NULL, " ");
  11. }
  12. return frase;
  13. }

Código
  1. case 3:
  2. system("cls");
  3. printf("La palabra más larga del String es ' %s '", palabraLarga(frase));
  4. break;


Título: Re: 1ra palabra de un String
Publicado por: fary en 21 Febrero 2015, 16:43 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* Función para mostrar la palabra más larga de una frase */
  5. char* palabraLarga(char frase[50]){
  6.    char *elemento = strtok ( frase, " " );
  7.  
  8.    strcpy(frase, elemento);
  9.  
  10.    while ( elemento != NULL ) {
  11.        if(strlen(elemento) >= strlen(frase))
  12.        strcpy(frase, elemento);
  13. elemento = strtok(NULL, " ");
  14.    }
  15.    return frase;
  16. }
  17.  
  18. int main()
  19. {
  20.    char frase[] = "Me gusta el chocolate con pan";
  21.    printf("La palabra más larga del String es ' %s '\n", palabraLarga(frase));
  22.    return 0;
  23. }


Cuidado con los tamaños de los buffer.

saludos.