SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: m3kanic0 en Martes 16 de Mayo de 2006, 08:09

Título: Porque Empieza Asi Un Programa ?
Publicado por: m3kanic0 en Martes 16 de Mayo de 2006, 08:09
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 ?
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: jrsmith en Martes 16 de Mayo de 2006, 16:11
sera porque son declaradas variables globales
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: rir3760 en Martes 16 de Mayo de 2006, 17:17
Esa es la forma en que se declaraban las funciones antes que se publicara el primer estandar de C.

Un saludo
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: m3kanic0 en Miércoles 17 de Mayo de 2006, 05:30
NO es lo mismo la primera con la segunda entonces ?
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: m3kanic0 en Miércoles 17 de Mayo de 2006, 05:38
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
}
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: carmamezo en Miércoles 17 de Mayo de 2006, 07:56
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:
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: m3kanic0 en Miércoles 17 de Mayo de 2006, 16:21
gracias por la respuesta intentare hacer lo que entendi de aca gracias. :D
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: carmamezo en Jueves 18 de Mayo de 2006, 10:43
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.
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: carmamezo en Jueves 18 de Mayo de 2006, 10:47
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.
Título: Re: Porque Empieza Asi Un Programa ?
Publicado por: m3kanic0 en Viernes 19 de Mayo de 2006, 07:17
gracias por las respuestas ojala resulte lo que quiero hacer. :D