llamar a la función que contiene argc,argv[]

Jen
28 de Febrero del 2006
Tengo este enunciado:
Escribir un programa que copie un fichero en otro y a continuación liste el fichero copiado. Los parámetros se pasarán por la línea de comandos. Sintáxis:
./copia fichero_origen fichero_destino
· En el programa principal se harán las siguientes llamadas a las funciones:
copiarFicheros y listarFichero. Pasa los parámetros que consideres
necesarios.
· Escribe las funciones en una biblioteca de funciones llamada ficheros.c y el fichero de cabecera ficheros.h
· Escribe el fichero Makefile correspondiente
==================================================
En fin, tengo un main: main(int argc,char *argv[])
una función para copiar el fichero en otro, a la que le paso los argumentos: copiarficheros(int argc,char *argv[])
y una función que lista el fichero resultante: listarfichero(int argc,char *argv[])

Mi pregunta es esta: ¿cómo hago la llamada, desde main, a dichas funciones? Yo he probado con algo así: copiarficheros(argc,*argv[]), y también añadiéndoles ampersands (&), número de argumento (por ejemplo argv[1]) y otras más cosas, pero no doy con lo que busco, ya que soy nueva con esto de usar argumentos desde la línea de comando, pueden ayudarme por favor? Gracias de antemano ;)

Noel Solw
28 de Febrero del 2006
Te envio un programa que trabaja con comandos de linea, como ejemplo para que puedas hacer el tuyo.
Este programa es una calculadora elemental, que acepta una sola operacio por vez. Cuidate de dejar espacios entre los numeros y el operador.

// program k9b1.CPP - page 195
// command lines arguments : calculator.
// 15/3/2002
// written in Borland CPP ver 3.1

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

void Process(int argc,char *argv[])
{
if(argc != 4)
{
cout << "wrong arguments number ! ! !" << endl;
return;
}
float first = atof(argv[1]),
second = atof(argv[3]),
result;
char op = argv[2][0];
cout << first << " " << op << " " << second;
switch(op)
{
case '+' : result = first + second;
break;
case '-' : result = first - second;
break;
case '*' : result = first * second;
break;
case '/' : if(fabs(second) < 0.00001)
{
cout << endl << "division by zero error ! ! !" << endl;
return;
}
result = first / second;
break;
} // SWITCH op
cout << " = " << result << endl;
} // PROCESS

void main(int argc,char *argv[])
{
clrscr();
cout << "command lines arguments : calculator.n";
cout << "-----------------------------------------------------"
"-------------------------n";
Process(argc,argv);
cout << "-----------------------------------------------------"
"-------------------------n";;
cout << "end of program - good bye ! ! !n";
getch();
} // MAIN

/*
command lines arguments : calculator.
------------------------------------------------------------------------------
120 / 19 = 6.31579
------------------------------------------------------------------------------
end of program - good bye ! ! !
*/