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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Parámetros en main y función Sleep()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Parámetros en main y función Sleep()  (Leído 4,949 veces)
Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Parámetros en main y función Sleep()
« en: 5 Junio 2012, 09:52 am »

Buenas, vuelvo de nuevo con más dudas.

En esta ocasión estoy tratando de mostrar una cadena, letra a letra, de momento, el siguiente code me funciona correctamente:

Código
  1. //For WIN systems, use the header windows.h
  2. //For NIX systems, use the header unistd.h
  3.  
  4. #include <iostream.h>
  5. #include <string.h>
  6. #include <windows.h>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12. string str1 = "This is only a test";
  13. int count;
  14. int limit;
  15.  
  16. limit = str1.length() - 1;
  17. for (count = 0; count <= limit; count++)
  18. {
  19. cout << str1.at(count);
  20. Sleep(50);
  21. }
  22. }

Ahora bien, tengo dos dudas:

1.- El compilador (Dev-C++) me muestra esta advertencia:
Citar
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

La cual me lleva a deducir que la cabecera que estoy utilizando (windows.h o unistd.h, dependiendo del sistema) puede no ser la más apropiada. ¿Alguien podría decirme si DevC++ incluye alguna con una función igual a Sleep()?

Si vale de forma universal, independientemente del OS, sería incluso mejor que las que uso actualmente, que son dependientes del OS.

2.- He intentado hacer que este pequeño programita reciba dos parámetros, un int (con el tiempo en milisegundos entre letra y letra), y la cadena a mostrar.

Tras unos intentos lo he dejado tal que así:

Código
  1. #include <iostream.h>
  2. #include <string.h>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(int interval=50, string str1)
  8. {
  9. // string str1 = "This is only a test";
  10. int count;
  11. int limit;
  12.  
  13. limit = str1.length() - 1;
  14. for (count = 0; count <= limit; count++)
  15. {
  16. cout << str1.at(count);
  17. Sleep(interval);
  18. }
  19. }

Pero no me funciona...

Extrañamente, si introduzco un cout para mostrarme los valores de los parámetros introducidos (interval y str1)...

Código
  1. cout << interval;
  2. cout << str1;

Devuelve lo siguiente, dependiendo de la entrada:

interval:
1 : si no introduzco parámetro
2 : si introduzco parámetro (cualquiera)
str1:
1.4013e-045: si no introduzco parámetro
2.8026e-045: si introduzco parámetro (cualquiera)

Los cuales, evidentemente no son los valores que deberían de entrar.

¿En qué puedo estar fallando esta vez?

Un Saludo, y miauchísimas gracias por adelantado.


« Última modificación: 5 Junio 2012, 09:58 am por Saberuneko » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Parámetros en main y función Sleep()
« Respuesta #1 en: 5 Junio 2012, 10:22 am »

Que yo sepa para pasar argumentos en la funcion main es así:
main(int argc, char *argv[]);

seguramente tenes problemas de direccionamiento con los punteros, has prueba con ese prototipo y cuentas
y si tu intensión es otra tambien...
respecto al mensaje del compilador ahí mismo te esta diciendo sobre el .h de la cabecera seguramente con agregarle el ".h" se
arregla... la verdad no sé porque no utilizo dev... por cierto eso te compila con dev-cpp?  :o :)


En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: Parámetros en main y función Sleep()
« Respuesta #2 en: 5 Junio 2012, 11:23 am »

Tras un experimento extremadamente simple para intentar refrescarme respecto a los parámetros...

Código
  1. #include <iostream.h>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. cout << argv[1];
  9. cout << argv[2];
  10. cout << argv[3];
  11. }

¡COMODO AntiVirus me ha detectado el .exe generado al compilar como una amenaza! Ya les he enviado un ticket, porque esta es la gota que colmó el vaso...
Si ésta no fuese la máquina del trabajo, ya le habría cambiado el AV hace mucho.
Sin comentarios.


Bueno, el caso, respecto a los headers, lo que quiero no es quitar el warning, sino que lo que me interesa es saber si existe algún header que no esté "anticuado", como indica mi compilador.

El hecho de quitar .h particularmente en #include <windows.h>, hace que no se reconozca la función Sleep(), así que no me vale.

Respecto a la compilación, si, ambos códigos me compilan, el primero ejecuta sin problemas, el segundo no... me da el típico error:

Citar
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Tras ejecutrarlo.

A ver qué es lo que he roto esta vez como para que me salte el AV...

Un Saludo.
« Última modificación: 14 Junio 2012, 15:25 pm por Saberuneko » En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Parámetros en main y función Sleep()
« Respuesta #3 en: 5 Junio 2012, 16:19 pm »

No es de la librería windows.h de donde debes sacar el .h, sino del iostream.

Código
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8. cout << argv[1];
  9. cout << argv[2];
  10. cout << argv[3];
  11. }
En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: Parámetros en main y función Sleep()
« Respuesta #4 en: 14 Junio 2012, 15:52 pm »

Ok, saqué el .h del iostream y ya no da problemas, pensaba que era windows.h el header que se consideraba como obsoleto.

Avancé algo más, no es exactamente lo que quiero, pero se acerca más...
Hay que ejecutar el programa en sí primero y luego meter los parámetros.

Pero al menos se introducen con el formato que quería:
Código:
:> <intervalo> <string>

Código
  1. //For WIN systems, use the header windows.h
  2. //For NIX systems, use the header unistd.h
  3.  
  4. #include <iostream>
  5. #include <string.h>
  6. #include <windows.h>
  7.  
  8. using namespace std;
  9.  
  10. void sayline(string strx, int intx)
  11. {
  12. int count;
  13. int limit;
  14.  
  15. limit = strx.length() - 1;
  16. for (count = 0; count <= limit; count++)
  17. {
  18. cout << strx.at(count);
  19. Sleep(intx);
  20. }
  21. }
  22.  
  23. int main()
  24. {
  25. char str1[256];
  26. int interval;
  27.  
  28. cout << ":>" << endl;
  29. cin >> interval;
  30. cin.getline(str1, 256);
  31.  
  32. sayline(str1, interval);
  33. }
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Parámetros en main y función Sleep()
« Respuesta #5 en: 14 Junio 2012, 16:07 pm »

Tambien deberias usar cstring en vez de string.h

Saludos ;D
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines