elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 122
71  Programación / Programación C/C++ / Re: Copiando cadenas - comportamientos extraños en: 15 Abril 2014, 22:10 pm
* Utilizas el puntero "saludo" sin inicializar:
Código
  1. char* saludo;
  2.  
  3. /* ... */
  4.  
  5. gets(saludo);
Debes reservar un bloque de memoria, almacenar la dirección de este en esa variable y solo entonces la utilizas (sin validaciones):
Código
  1. char *saludo;
  2.  
  3. /* ... */
  4.  
  5. saludo = malloc(100);
  6. puts("Texto:");
  7. gets(saludo);
ANEXO: También puedes declarar un array de char[100] y listo.
72  Programación / Programación C/C++ / Re: Como utilizar fstream para archivos con rutas dinamicas en: 15 Abril 2014, 18:29 pm
Notar que si es para Windows es mejor la Win32 y evitar usar ese tipo de librerias, olvide decirlo.
En potencia sí, pero en simpleza no me atrevería a decir eso (malditas Windows API ;D).

Si no necesita cosas de ficheros muy concretas, le basta y le sobra con la librería estándar.
73  Programación / Programación C/C++ / Re: Como utilizar fstream para archivos con rutas dinamicas en: 15 Abril 2014, 18:24 pm
Esta línea:
Código
  1. bool j = file_exists("%windir%\system32\cmd.exe"); // se puede usar file.exe pues para verficar

Se traduce como:
Código
  1. "%windir%system32cmd.exe"

Lo cual no es lo que quieres realmente.

Para comprobarlo este sencillo programa:
Código
  1. int main()
  2. {
  3.    char* a = "%windir%\system32\cmd.exe";
  4.    cout<<a<<endl;
  5.    return 0;
  6. }

La solución es ponerlo con doble \\:
Código
  1. bool j = file_exists("%windir%\\system32\\cmd.exe"); // se puede usar file.exe pues para verficar

Por cierto esta función:
Código
  1. bool file_exists(const char * f)
  2. {
  3.   ifstream file;
  4.   file.open(f);
  5.   if(file.fail())
  6.       return false;
  7.   file.close();
  8.   return true;
  9. }

Puede simplificarse:
Código
  1. bool file_exists(const char * f)
  2. {
  3.   ifstream file(f);
  4.   return file;
  5. }

Hace exactamente lo mismo. Aunque si te parece más clara puedes dejarla así:
Código
  1. bool file_exists(const char * f)
  2. {
  3.   ifstream file(f);
  4.   return file.good();
  5. }
74  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Sobre los avatares en: 14 Abril 2014, 19:09 pm
¿Qué tal ahora? (lo que hice fue quitarle el https)
¡Ah! Maldita sea la S ;D

Gracias ^^
75  Programación / Programación C/C++ / Re: validacion de cadenas en c++ en: 14 Abril 2014, 11:21 am
Eferion lo ha explicado perfecto solo tengo que añadir un punto más:

* El programa es portable y puede compilarse en otras plataformas/SO sin dificultad.
76  Programación / Programación C/C++ / Re: Extraño problemas con vector en: 14 Abril 2014, 11:19 am
El problema de los corchetes es que si el índice no existe, el contenedor puede añadirlo automáticamente al hacer la consulta ( en los mapas al menos es así ).
Bueno los maps es otra liga, en el vector no pasa eso.

Pero tampoco controla el indice que le metes, lo cual puede ser bueno si quieres máxima eficiciencia pero por otro lado...

Después de este error, he perdido mi confianza en los [] ;D

Una opción es usar, como has comentado, el método "at", que es de solo lectura. El problema es que te obliga a controlar las excepciones y en algunos entornos está mal visto.
No sé porque la gente odia tanto las excepciones de verdad, es una magnifica forma de depurar.

Pones throw "mensaje" en potenciales errores (archivo no encontrado, entrada invalida...) y envuelves las llamadas a las funciones con un try/catch. Si cualquiera de esas funciones tienen algún error, lo sabras enseguida, sin tener que comprobar funcion por función.

El segundo método es lanzar un find para saber si posee ese índice ( en el caso de los vectores se puede hacer con size acordándose de controlar números negativos ) y, si el índice existe entonces recuperar el valor asociado.
A ver si te sigo... ¿Algo así?
Código
  1. map<int,int> Ejemplo;
  2. //...
  3.  
  4. auto it = Ejemplo.find(4);
  5.  
  6. if (it != Ejemplo.end()) cout<<it->second<<endl;
  7. else cout<<"No encontrado"<<endl;

No esta mal ^^
77  Programación / Programación C/C++ / Re: Problema con dialogo en: 13 Abril 2014, 22:31 pm
Problema de tipos de variables, pero falta código para saber cual es.

También puedes activar el modo -fpermissive. Aunque no es una buena práctica.
78  Programación / Programación C/C++ / Re: validacion de cadenas en c++ en: 13 Abril 2014, 22:29 pm
"Borrar" sería retroceder un caracter, imprimir un espacio y volver a retroceder un caracter. Había una función llamada gotoxy que sirvia para moverte a una posición x,y de la consola.

Pero no entiendo porque te complicas tanto, lo que estas haciendo es mucho más oscuro y peor que el sistema estandar.
79  Programación / Programación C/C++ / Re: Como modificar archivos con c++ sin utilizar system en: 12 Abril 2014, 19:36 pm
http://www.minidosis.org/#/temas/Cpp.Ficheros
80  Programación / Programación C/C++ / Re: Como modificar archivos con c++ sin utilizar system en: 12 Abril 2014, 19:29 pm
Abres el archivo y si no puedes abrirlo esque no existe (o no tienes permisos para adceder a el, que es lo mismo).

Pero para eso tienes que saber como funcionan los archivos en C++... Y no es con FILE (eso es de C a secas).
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 122
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines