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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [43] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 ... 235
421  Programación / Programación C/C++ / Re: ¿Queda algo en el Buffer de Entrada stdin? (Solucionado) en: 7 Diciembre 2018, 05:49 am
Tienes razon por alguna razon el fseek no esta procesando la ultima parte del  stdin. Cambie el printf por perror para ver que error marca y dice

Código
  1. if(flagValidacion)
  2. perror("fseek");

Código:
fseek: Invalid argument

Hay que ver el source code de fseek y ver exactamente que parte es la que falla. Y ver si es que de alguna manera el sistema guarda esos bytes saltados, cosas que no creo. Pero hay que revisar.

La otra opcion es lo que comente de revisar el ultimo valor leido por fgets y determinar si queda algo en buffer de entrada. Ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. void myflush(const char *ptr,int size) {
  4. int i = 0;
  5. while(i < size && ptr[i++] != 0xA);
  6. if(i == size)
  7. while (getchar() != 0xA);
  8. }
  9.  
  10. int main() {
  11. char temp[10];
  12. int flagValidacion ;
  13. while(1) {
  14. printf("> ");
  15. fgets(temp,10,stdin);
  16. myflush(temp,10); // Tiene que ser el ultimo arreglo leido y la ultima cantidad marcada con fgets
  17. printf("cadena: %s\n", temp);
  18. }
  19. }
  20.  

O bien realizarlo con una implementacion propia de fgets que le quite ese "pendiente" al programador. Incluso como un extra le borras al final ese "Enter" si es que existe.

Código
  1. #include <stdio.h>
  2.  
  3. void myfgets_stdin(char *ptr,int size) {
  4. int i = 0;
  5. fgets(ptr,size,stdin);
  6. while(i < size && ptr[i++] != 0xA);
  7. if(i == size)
  8. while (getchar() != 0xA);
  9. else
  10. ptr[i-1] = '\0';
  11. }
  12.  
  13. int main() {
  14. char temp[10];
  15. int flagValidacion ;
  16. while(1) {
  17. printf("> ");
  18. myfgets_stdin(temp,10);
  19. printf("cadena: %s\n", temp);
  20. }
  21. }
  22.  

Saludos

422  Programación / Programación C/C++ / Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila en: 7 Diciembre 2018, 00:26 am
Jajaja tienes razon, esperemos el usuario se de cuenta de eso. Acabo de corregir la respuesta anterior.
423  Programación / Programación C/C++ / Re: [?] ERRORLEVEL en: 6 Diciembre 2018, 23:08 pm
No puede ser posible, algo esta mal.

  • No estes ejecutando el ejecutable que compilaste. Intenta borrar el exe y compilar de nuevo.
  • Puede ser algun problema de compilador que estes usando.
424  Programación / Programación C/C++ / Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila en: 6 Diciembre 2018, 23:06 pm
Como te comentan esta mal la sentencia, no puedes meter el operador or "||" en medio de la funcion strcmp lo correcto seria:

Código
  1. do{
  2.  
  3. }while (strcmp(str,"cadena 1")==0 || strcmp(str,"cadena 2")==0);


Edición se cambiaron los != por == ya que como estaba siempre daria verdadero.

Saludos!
425  Programación / Programación C/C++ / Re: [?] ERRORLEVEL en: 6 Diciembre 2018, 23:01 pm
Posiblemente tu programa no este terminando de manera correcta, posiblemente tienes algun bufferoverflow y el programa termina de forma inesperada y sin control de error. ejemplo

PROGAMA TOTALMENTE MAL:

Código
  1. #include<string.h>
  2.  
  3. void funcion() {
  4. char arreglo[20];
  5. memset(arreglo,'A',100); //BUFFER OVERFLOW !!
  6. }
  7.  
  8. int main() {
  9. funcion();
  10. return 1;
  11. }
  12.  

Ejemplo llamando a la funcion vulnerable.



Ejemplo SIN llamar a la funcion vulnerable




El programa anterior es totalemente vulnerable APROPOSITO, termina en la funcion(), sin volver a la funcion principal.

Revisa tu codigo posiblemente tienes un  BUG, si manejas memoria dinamica asegurate de no estar trabajando sobre apuntadores ya liberados, si trabajas con funciones como strcpy o similares segurate de cambiarlas por sus metodos seguros,

Asegurate de no salirte de los Limites del arreglo, algo muy comun es que si tienes un arreglo[10], y en el codigo realizas algo como for (i= 0; i <= 10, i++), en este caso estarias escribiendo UN SOLO byte fuera de la direccion del arreglo lo cual causaria un error de buffer overflow conocido como OFF by ONE



Saludos
426  Programación / Programación C/C++ / Re: Error en la compilación! en: 6 Diciembre 2018, 19:51 pm
Para evitar esto hay que pasar dicho objeto como referencia.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int SumaYCuenta(ifstream &f, float& suma);
  8.  
  9. int main(void) {
  10. int num_elementos = 0;
  11. float suma = 0;
  12. ifstream fich_in;
  13. string nombre;
  14.  
  15. cout << "Este programa nos calcula la media de los numeros de un fichero en caso de que exista algun numero dentro de ese fichero" << endl << endl;
  16. cout << "Dame el nombre del fichero: ";
  17. cin >> nombre;
  18.  
  19. fich_in.open(nombre);
  20.  
  21. if (!fich_in)
  22. cout << "Error abriendo fichero";
  23. else {
  24. num_elementos = SumaYCuenta(fich_in, suma);
  25. if (num_elementos != 0)
  26. cout << "La media es: " << suma / num_elementos;
  27. else
  28. cout << "El fichero no contenia ningún elemento.";
  29. }
  30. fich_in.close();
  31. return 0;
  32. }
  33.  
  34. int SumaYCuenta(ifstream &f, float& suma) {
  35. int num;
  36. int contador = 0;
  37.  
  38. while(f >> num)   {
  39. suma = suma + num;
  40. contador++;
  41. }
  42. return contador;
  43. }
  44.  

El cofigo ya no produce errores, pero tampoco lo probe.

Saludos
427  Foros Generales / Dudas Generales / Re: Alguien entiende bien sobre el uso de Bitcoin? en: 6 Diciembre 2018, 19:35 pm
Si descargas tu el https://bitcoin.org/en/bitcoin-core/ Y administras tu propia cartera, tu puedes establecer el Fee

https://bitcoin.org/en/faq#how-difficult-is-it-to-make-a-bitcoin-payment


Citar
Choose your own fees - There is no fee to receive bitcoins, and many wallets let you control how large a fee to pay when spending. Higher fees can encourage faster confirmation of your transactions. Fees are unrelated to the amount transferred, so it's possible to send 100,000 bitcoins for the same fee it costs to send 1 bitcoin. Additionally, merchant processors exist to assist merchants in processing transactions, converting bitcoins to fiat currency and depositing funds directly into merchants' bank accounts daily. As these services are based on Bitcoin, they can be offered for much lower fees than with PayPal or credit card networks.
428  Programación / Programación C/C++ / Re: [?] Pantalla completa en C/C++ en: 6 Diciembre 2018, 19:23 pm
Para eso se necesita algo de programacion a bajo nivel en ensamblador, recuerdo que antes lo hacia mandado a llamar a la interruccion 10h, sin embargo en sistemas modernos como windows 7 en adelante eso ya no es tan necesario, podrias utilizar alguna libreria grafica tipo libsdl https://www.libsdl.org/

Con lo cual podrias programar en C o C++ con la libreria que te facilite las funciones de bajo nivel, desde poner pixeles y hastra manipular el sonido

Saludos!
429  Programación / Programación C/C++ / Re: [?] ERRORLEVEL en: 6 Diciembre 2018, 19:17 pm
Código
  1. int main() {
  2. return 20; //El valor que retornes de la funcion principal es el indicado para el ERRORLEVEL, generalemnte siempre es return 0; cuando todo salio bien
  3. }
  4.  


430  Comunicaciones / Redes / Re: AYUDA PACKET TRACER en: 6 Diciembre 2018, 18:34 pm
Creo que nadie te va a hacer ese tipo de tarea, debes de hacerlo tu.

Packet tracer es muy didactico y intuitivo, no es dificil solo es cosa de buscar los modelos de los equipos que necesitas y arrastrarlos.
Páginas: 1 ... 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [43] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines