Foros del Web » Programación para mayores de 30 ;) » C/C++ »

declaración de argv y argc

Estas en el tema de declaración de argv y argc en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/04/2009, 03:17
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
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
Es bantante extraño ya que, tanto argv como argc, no lo debería declarar en ningún momento. Alguien sabe de que puede ser??

Gracias!!!
  #2 (permalink)  
Antiguo 20/04/2009, 03:37
venkman
Invitado
 
Mensajes: n/a
Puntos:
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
  1. int main(int argc, char *argv[]) {
  2. // ...
  #3 (permalink)  
Antiguo 20/04/2009, 08:37
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
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
  #4 (permalink)  
Antiguo 20/04/2009, 08:44
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: declaración de argv y argc

Dónde los usas? Podríamos ver tu código?
  #5 (permalink)  
Antiguo 20/04/2009, 09:25
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: declaración de argv y argc

gracias de nuevo por contestar.

este es el código:
Código:
#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;
}
solo pongo el main.cc que es donde se encuentra el programa principal.

espero una respuesta. gracias!

PD: como etiquetas el código C?

Última edición por boli-sp; 20/04/2009 a las 10:22
  #6 (permalink)  
Antiguo 20/04/2009, 11:18
venkman
Invitado
 
Mensajes: n/a
Puntos:
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.
  #7 (permalink)  
Antiguo 21/04/2009, 08:49
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: declaración de argv y argc

gracias venkman!!

Última edición por boli-sp; 21/04/2009 a las 14:08
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:18.