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. |