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)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar datos de una función a otra
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar datos de una función a otra  (Leído 4,409 veces)
Vurkolak

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Pasar datos de una función a otra
« en: 20 Julio 2020, 17:11 pm »

Buenas a ver si alguien me puede ayudar, en esta función para resumir simplemente lo que hace es abrir el ficheroIpOK.txt donde contienen las ips y las muestra por pantalla, ahora tengo una segunda función que se llama pingMediaDNS, está función esta preparada para la inserción de una ip dns por teclado (scanf) pero ahora necesito que la función ipContestan le envie el valor que lee del fichero para que haga la media del ping, no se si me explico bien.

Muchas gracias.
saludos.

Código
  1. void ipContestan() {
  2.  
  3. char lectura[800];
  4.  
  5. char ruta[] = "ficheroIpOK.txt";
  6.  
  7.  
  8. FILE* ficheroIpOK; // Declaramos el nuevo fichero
  9. ficheroIpOK = fopen(ruta, "r"); // Abrimos el fichero en el modo de añadir
  10. if (ficheroIpOK == NULL) {
  11. printf("Error al abrir el fichero ficheroIpOK");
  12. }
  13. else
  14. {
  15. printf("*********************************Lectura de fichero %s********************************\n",ruta);
  16.  
  17. while (fgets(lectura, 100, ficheroIpOK)!=NULL) {
  18. printf("%s", lectura);
  19.  
  20.  
  21. }
  22.  
  23. }
  24. fclose(ficheroIpOK);
  25.  
  26. }
  27.  
  28. int pingMediaDNS(char* dns, const char* rutaFichero) {
  29.  
  30. char command[100];
  31. char dnsRuta[100];
  32. char lectura[100];
  33. char mediaMs[100];
  34. bool pingOK = false;
  35. int length, newlength, j = 0, media = -1;
  36.  
  37.  
  38. /* Construcción del comando ping para los dns introducidos*/
  39.  
  40. strcpy(command, "ping -n 10 "); // Copiamos ping -n 10 a command <<El parametro de -n es para el número de pings totales>>
  41. strcat(command, dns); // concatenamos ping -n 10 + dns
  42. strcat(command, " > "); // concatenamos > a ping -n 10 + dns
  43. strcpy(dnsRuta, rutaFichero); // Copiamos la ruta del fichero dns1.txt o dns2,txt a dnsruta
  44. strcat(command, dnsRuta); // concatenamos dnsruta a ping -n 10 + dns + > + dnsruta
  45. system(command); // Ejecutamos el comando ya construido
  46.  
  47. FILE* ficheroDns;
  48. ficheroDns = fopen(rutaFichero, "r");
  49. if (ficheroDns == NULL) {
  50. printf("El fichero %s no existe o no se puede abrir", rutaFichero);
  51. }
  52. else {
  53. while (fscanf(ficheroDns, "%s", lectura) != EOF)
  54. {
  55. if (strstr(lectura, "Media") != NULL) {
  56. pingOK = true;
  57. }
  58. }
  59. length = strlen(lectura);
  60. newlength = length - 2;
  61. for (int i = 0; i < newlength; i++)
  62. {
  63. mediaMs[j++] = lectura[i];
  64. }
  65. mediaMs[j] = '\0';
  66. media = -1;
  67. media = atoi(mediaMs);
  68.  
  69. if (pingOK) {
  70. printf("\nPing correcto %s \n", dns);
  71. }
  72. else
  73. {
  74. printf("\nPing incorrecto %s \n", dns);
  75. }
  76. }
  77. return(media);
  78. }
  79.  
  80.  
  81.  


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Pasar datos de una función a otra
« Respuesta #1 en: 21 Julio 2020, 01:52 am »

No sé muy bien lo que quieres hacer con la segunda función pero me parece que le estás dando muchas vueltas a los mismos datos de manera innecesaria.
De la línea 59 a la 67 se puede resumir en:
Código
  1. lectura[strlen(lectura)-2] = '\0';
  2. media = atoi(lectura);

Además dices que la función pingMediaDNS() está preparada para una entrada por teclado y no es cierto. La única entrada que recibe esa función es desde fichero en la línea 53.

Por lo tanto, no se muy bien ni lo que quieres hacer ni dónde tienes el problema.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Vurkolak

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Pasar datos de una función a otra
« Respuesta #2 en: 21 Julio 2020, 10:37 am »

Buenas K-YreX, te agradezco una vez más por ayudarme, la cuestión es que me piden que el programa sea modular, estás funciones la función pingMediaDNS la hice en la pasada práctica para que se introducirán las DNS con un scanf (creo que me he explicado mal) con la entrada manual toda va bien, pero ahora me piden que no sea una entrada por teclado si no que se leerá desde el fichero, claro de alguna manera ahora yo tengo que pasar el valor que está leyendo la función ipContestan para pasarla a pingMediaDNS que será el valor leído del fichero, de esta manera no debería tocar ni la función ni nada ya que de la lectura del archivo devolvería el dato que le tengo que pasar a la función pingMediaDNS que es el Char*DNS, tal vez la función está mal planteada para el propósito de modulación o mi pensamiento es erróneo al hacerlo de esta manera, ando bastante perdido y seguro que me estoy complicando la vida.

Muchas gracias
Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error al pasar un vector de una funcion a otra
Programación C/C++
loadenro 5 2,701 Último mensaje 30 Mayo 2014, 08:20 am
por eferion
Pasar Array de una funcion a otra
Programación C/C++
YDOM 8 3,764 Último mensaje 2 Junio 2014, 01:14 am
por MessageBoxA
Pasar nombre de funcion como parametro de otra funcion en java
Java
xGisKaRDx 3 9,479 Último mensaje 1 Agosto 2014, 23:27 pm
por jhonatanAsm
como pasar variable de una a otra desde una funcion « 1 2 »
Programación C/C++
geshiro 16 7,067 Último mensaje 22 Mayo 2016, 03:51 am
por geshiro
pasar datos de una variable a otra ???
.NET (C#, VB.NET, ASP)
luis456 0 2,638 Último mensaje 1 Marzo 2020, 14:18 pm
por luis456
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines