elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion obtener siguiente palabra
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion obtener siguiente palabra  (Leído 1,955 veces)
codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Funcion obtener siguiente palabra
« 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.


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Funcion obtener siguiente palabra
« Respuesta #1 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.


En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Re: Funcion obtener siguiente palabra
« Respuesta #2 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
En línea

RayR

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Funcion obtener siguiente palabra
« Respuesta #3 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.
En línea

codX

Desconectado Desconectado

Mensajes: 65


Es más complejo de lo que crees...


Ver Perfil
Re: Funcion obtener siguiente palabra
« Respuesta #4 en: 24 Julio 2019, 03:21 am »

 ;D ;D ;D ;D

gracias amigooo!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines