[C con Clase] Pasar argumentos al main desde otro programa

Pablo Alejandro Herrero pablusplus en gmail.com
Jue Jun 9 16:56:04 CEST 2011


Hola! Estos parámetros que se pasan al main los tomas desde la linea de
comandos, tendrías que llamar a tu programa indicando en la consola: >
miprograma 1 3 [enter]
y te devolvería el resultado según hayas especificado (en este caso sería 1
+ 3 = 4).
En tu código no estás leyendo los argumentos.
 argc es el conteo de parámetros que se escribieron al momento de invocar el
programa (2 en el ejemplo: "1 3") y argv es un puntero base de un array de
cadenas. O sea, cuando invocaste al programa se creó un array así:      {"1"
, "3"} (en memoria se ve más plano, como ...1\03\0...) donde argv señala al
elemento 0 (el "1") con lo que argv[0] => "1", argv[1] => "3", argv[2] =>
indefinido! para no pasarte se te indican la cantidad de valores que
entraron en el argc. O sea que podés hacer esto para escribir en pantalla:

int main(int argc, char *argv){
    for(int i = 0, i < argc, i++)
        printf("s%\r\n", argv[i]);
    return 0;
}

una última cosa: está tratando con cadenas, no con valores numéricos. Para
pasar de cadena a número hay funciones específicas como atoi() que convierte
una cadena a entero. De cualquier manera, si llegan a pasar una cadena
alfanumérica esa función devuelve 0, lo cual no es del todo correcto porque
si pasan algo como 5.0, no interpreta un valor con decimales y le asigna 0.
Asi que ahí tienen trabajo para verificar los valores que entren e indicarle
al usuario que no ingresó un número entero o lo que quieran; aunque si es
para algo 'caserito' no creo que tengan mucho problema. Espero haya llegado
a tiempo la respuesta, saludos!

El 8 de junio de 2011 01:38, Jadder Antonio Moya Urbáez <
jadder.antonio en gmail.com> escribió:

> HOla, un compañero y yo queremos hacer que el programa de el pase
> argumentos de todo tipo a mi programa y que mi programa le responda
> pasandole argumentos.
>
> en C++, el main recive el int main(int argc, char* argv[]) indicado la
> cantidad de argumentos , pero aun asi no puedo hacer que un programa me
> devuelva la suma de 2 argumentos que le pase, ejemplo
>
> #include<iostream>
> using namespace std;
>
> int suma(int,int);
> int a=0, b=0;
>
> int main(int argc, char* argv[])
> {
>     cout << suma(a,b);
>     return 0;
> }
>
> int suma(int a, int b)
> {
>     return a +b;
> }
>
>
>
> --
> *webmaster Jadder
> ***
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110609/c138e602/attachment.html>


Más información sobre la lista de distribución Cconclase