Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: codX en 24 Julio 2019, 00:57 am



Título: Funcion obtener siguiente palabra
Publicado por: codX en 24 Julio 2019, 00:57 am
Hola, estoy estudiando el libro de c de Dennis Ritchie, el cual muestra la siguiente funcion para obtener la siguinete palabra de la etrada

Código
  1. /* getw ord:
  2. obtiene la siguiente palabra o carácter de la entrada */
  3.  
  4. int getword (char *word, int lim)
  5. {
  6. int c, getch(void);
  7. void ungetch(int);
  8. char *w = word;
  9. while (isspace(c = getch()))
  10.        ;
  11. if (c != EOF)
  12.      *w++ = c;
  13. if (!isalpha(c)){
  14.      *w = '\0 ';
  15.       return c;
  16. }
  17. for ( ; --lim > 0; w++ )
  18.        if (!isalnum (*w = getch())) {
  19.                ungetch(*w );
  20.                break ;
  21.        }
  22. *w = '\0 ';
  23. return word[0];
  24. }
  25. I

Lo que me tiene un poco desorientado son las 2da. y 3ra. línea del programa, que usa sintaxis para declarar variables, pero está llamando o funcioes. Ya lo he visto en otra parte del libro y no logro entenderlo. Si alguien puede explicarme, agradezco.


Título: Re: Funcion obtener siguiente palabra
Publicado por: @XSStringManolo en 24 Julio 2019, 01:55 am
Es lo mismo que cuando haces:
int numero = 1;
int numeroA = 2;

Las funciones tienen tipos al igual que las variables.
El ejemplo más obvio es la función main() del tipo int.

Cuando las funciones son de un tipo que no es void, siempre tienen un return.
bool funcion1()
{
// SI PASA ESTO:
return true;

else
{
return false;
}

}

Elr return de una función se puede asignar a una variable ya que lo que jave es sacar un valor de la función.

Cuando haces por ejemplo bool MiVariableBooleana = funcion1(); la función se ejecuta hasta que haga return. En el momento que se encuentre un return se devuleve el control a la función principal int main() con el valor que retornó la función para ser asignada a la variable.


Título: Re: Funcion obtener siguiente palabra
Publicado por: codX en 24 Julio 2019, 03:07 am
String Manolo, gracias. las líneas que no entiendo o las declaraciones mejor dicho son

getch(void);
void ungetch(int);

qué tipo de declaracion es esa? porque está dentro de la función. Perdoná que sea duro ja


Título: Re: Funcion obtener siguiente palabra
Publicado por: RayR en 24 Julio 2019, 03:09 am
En realidad en esas dos líneas no se está llamando a ninguna función; simplemente se están poniendo sus prototipos. Aunque normalmente se ponen al inicio del código y fuera de cualquier función, nada impide hacerlo dentro del cuerpo de una función, como en este caso. La única diferencia es que en este caso, sólo podrán ser invocadas desde la función o funciones que tengan los prototipos.


Título: Re: Funcion obtener siguiente palabra
Publicado por: codX en 24 Julio 2019, 03:21 am
 ;D ;D ;D ;D

gracias amigooo!!!