Tengo un problema bastante raro con un programa.Trabajo con linux y el error es el siguiente:
Código HTML:
argv no se declaró en este ambito
Gracias!!!
| |||
| declaración de argv y argc Hola. Tengo un problema bastante raro con un programa.Trabajo con linux y el error es el siguiente: Código HTML: argv no se declaró en este ambito Gracias!!! |
| |||
| Respuesta: declaración de argv y argc Hombre, los deberías declarar en la firma de la función main, no?
Código C:
Ver original |
| |||
| Respuesta: declaración de argv y argc si, claro. pero aquí la teoría me falla ![]() se declaran donde tú bien dices, pero sólo se declaran aí y no más veces. pero cada vez que intento usar un argv o argc me da ese error gracias por contestar! Última edición por boli-sp; 20/04/2009 a las 08:52 |
| |||
| Respuesta: declaración de argv y argc gracias de nuevo por contestar. ![]() este es el código:
Código:
solo pongo el main.cc que es donde se encuentra el programa principal.#include "persona.hh"
#include "lista.hh"
bool errorComando(void);
bool errorSintaxis(void);
bool errorFichero(void);
bool tratamientoErrores(void);
int main(int argc, char **argv)
{
if(tratamientoErrores()==false)
{
//código
}
return 0;
}
bool errorComando(void)
{
bool error=false;
if(argc>=1)
{
if (argv[1]!="-nuevaPersona" || argv[1]!="-defuncion" || argv[1]!="-invertir" || argv[1]!="-baja")
error=true;
}
else
error=true;
return error ;
}
bool errorSintaxis(void)
{
bool error=false;
int longitud, i;
if(argv[1]=="-nuevaPersona")
{
if(argc==5 || argc==7)
{
int NPargv5=atoi(argv[5]);
longitud=strlen(argv[3]);
if(argv[2]!="-n" || longitud>50)
error=true;
if(argv[4]!="-a" || NPargv5>9999 || NPargv5<1)
error=true;
if(argc==7)
{
longitud=strlen(argv[7]);
if(longitud>9)//hai que comprobar se son todo numeros
error=true;
else
{
longitud=strlen(argv[7]);
for(i=0; i<longitud; i++)
{
if(isdigit(argv[7][i])==0)
error=true;
}
}
}
}
else
error=true;
}
if(argv[1]=="-defuncion")
{
if(argc==5)
{
int Dargv3=atoi(argv[3]);
int Dargv5=atoi(argv[5]);
if(argv[2]!="-i" || Dargv3>9999 || Dargv3<1)
error=true;
if(argv[4]!="-a" || Dargv5>9999 || Dargv5<1)
error=true;
}
else
error=true;
}
if(argv[1]=="-invertir")
{
if(argc!=1)
error=true;
}
if(argv[1]=="-baja")
{
if(argc==5)
{
int Bargv5=atoi(argv[5]);
longitud=strlen(argv[3]);
if(argv[2]!="-n" || longitud>50)
error=true;
if(argv[4]!="-a" || Bargv5<1 || Bargv5>9999)
error=true;
}
else
if(argc==3)
{
int Bargv3=atoi(argv[3]);
if(argv[2]!="-i" || Bargv3<1 || Bargv3>9999)
error=true;
}
else
error=true;
}
return error;
}
bool errorFichero(void)
{
bool error=false;
ifstream fichero;
fichero.open("datos.txt");
if(fichero.fail())
error=true;
fichero.close();
return error;
}
bool tratamientoErrores(void)
{
bool error;
error=errorComando();
if(error==false)
error=errorSintaxis();
if(error==false)
error=errorFichero();
return error;
}
espero una respuesta. gracias! ![]() PD: como etiquetas el código C? Última edición por boli-sp; 20/04/2009 a las 10:22 |
| |||
| Respuesta: declaración de argv y argc 1. Para etiquetar código, usa el botón # del editor del foro o escribe el código entre [highlight=C]código[/highlight] 2. Tu problema es que estás intentando usar argv y argc fuera de la función main. argv y argc son los parámetros que se le pasan automáticamente a la función main, pero no son variables globales. Tendrás que pasarle argc y argv a las funciones que los vayan a usar. |