• Sábado 14 de Diciembre de 2024, 14:54

Autor Tema:  Porque Empieza Asi Un Programa ?  (Leído 1937 veces)

m3kanic0

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Porque Empieza Asi Un Programa ?
« en: Martes 16 de Mayo de 2006, 08:09 »
0
tengo uncodigo y compila bien pero no entiendo pk sale asi

int main (argc, argv)
     int argc; char *argv[];
{
                 mas codigo
}

y no asi

int main (argc, argv) {
     int argc; char *argv[];
                mas codigo
}


 :unsure:  no entiendo sere muy bruto ?

jrsmith

  • Miembro MUY activo
  • ***
  • Mensajes: 127
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #1 en: Martes 16 de Mayo de 2006, 16:11 »
0
sera porque son declaradas variables globales
Most people are so ungrateful to be alive, but not you, not any more...


     
PUMA DE CORAZON Y HASTA LA MUERTE

rir3760

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #2 en: Martes 16 de Mayo de 2006, 17:17 »
0
Esa es la forma en que se declaraban las funciones antes que se publicara el primer estandar de C.

Un saludo
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz

m3kanic0

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #3 en: Miércoles 17 de Mayo de 2006, 05:30 »
0
NO es lo mismo la primera con la segunda entonces ?

m3kanic0

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #4 en: Miércoles 17 de Mayo de 2006, 05:38 »
0
Una consulta continuando con el tema aquel si yo a este trozo de codigo:

int main (argc, argv)
int argc; char *argv[];
{
mas codigo
}

Intento transformarlo en funcion estaria bien escrito asi ?


void md5 (argc, argv)
int argc; char *argv[];
{
mas codigo
}

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #5 en: Miércoles 17 de Mayo de 2006, 07:56 »
0
Hola,
esta es la forma en la que se hacían los programas para usarlos con la interfaz de comandos del viejo MS-DOS.  Permite llamar al programa y aprobechando la llamada pasarle algunos datos extra directamente.
Un ejemplo, tu puedes llamar desde el interfaz de comandos (cmd) al programa ipconfig para conocer tu IP.  Pero también puedes llamar al mismo programa añadiendo lo siguiente: ipconfig /all
Lo que hacemos aqui es llamar al programa y pasarle un parámetro (/all) para que nos muestre toda la información.

Pues aqui lo mismo. en argc tendremos el número de elementos que se han escrito detrás del nombre del programa (parámetros extra) y en argv[] tendremos esos parámetros que se han pasado.

Espero que te sirva de ayuda.
Un saludo.  :lightsabre:
No hay tonto más molesto que el ingenioso.

m3kanic0

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #6 en: Miércoles 17 de Mayo de 2006, 16:21 »
0
gracias por la respuesta intentare hacer lo que entendi de aca gracias. :D

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #7 en: Jueves 18 de Mayo de 2006, 10:43 »
0
Hola,
- Lo primero, la función main puede devolver algo int main o no void main, eso es a tu gusto.  Qizás te interese llamar desde un programa a otro programa para que le dé algo...

Un ejemplo absurdo de programa:

Código: Text
  1.  
  2. #include <windows.h>
  3. #include <stdio.h>
  4.  
  5. int main (int argc, char *argv[])
  6. {
  7.   if (argc==1)
  8.   {
  9.     printf("\n\tNo se han pasado parametros");
  10.     return -1;
  11.   }
  12.  
  13.   if (argc > 2)
  14.   {
  15.     printf ("\n\tDemasiados parametros.");
  16.     return -1;
  17.   }
  18.  
  19.   if (argc == 2)
  20.   {
  21.  
  22.     if (!strcmp(argv[1],"hola"))
  23.     {
  24.       printf("\n\tHola!!");
  25.       exit(1);
  26.     }
  27.     if (!strcmp(argv[1],"adios"))
  28.     {
  29.       printf("\n\tadios");
  30.       exit(1);
  31.     }
  32.   }
  33.   printf("\n\tEste programa solo acepta los siguientes parametros:\n\thola.\n\tadios.");
  34.   return -1;
  35. }
  36.  
  37.  

Este programa devuelve "Hola!!" cuando le pasas un hola como argumento y un "adios" cuando le pasas un adios.
Si no le pasas argumentos, te devuelve un error "no se han pasado argumentos", lo mismo ocurre si se le pasa demasiados argumentos, entonces devuelve "Demasiados parametros".
Si se le pasa un parámetro distinto de hola o adios devuelve un error indicando los parámetros que acepta.
Para comprobarlo, deberás llamar al programa mediante la interfaz de comandos y añadirle los parámetros (también se puede hacer desde el compilador, busca y encontrarás un apartado que te permite añadir parámetros para debuggear el programa).

Si te fijas, argc siempre vale 1, porque en argv, en la primera posición (argv[0]), siempre aparece la ruta del programa que se está ejecutando.

Espero que te sirva de ayuda.
Un saludo.
No hay tonto más molesto que el ingenioso.

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #8 en: Jueves 18 de Mayo de 2006, 10:47 »
0
Una cosa, para no crear dudas, en la última frase me refería a que si no le pasas argumentos al programa, argc valdrá igualmente 1, nunca vale menos pq argv siempre contiene la ruta completa del programa en su primera posición, independientemente de los argumentos.
No hay tonto más molesto que el ingenioso.

m3kanic0

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Porque Empieza Asi Un Programa ?
« Respuesta #9 en: Viernes 19 de Mayo de 2006, 07:17 »
0
gracias por las respuestas ojala resulte lo que quiero hacer. :D