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


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación C/C++ / Archivos temporales en: 18 Noviembre 2024, 20:35 pm
Buenas, estoy intentando desarrollar un programa que crea un archivo temporal y guarda en el los ping que responden correctamente:

#define _CRT_NO_SECURE_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

#define MAX_SIZE 999

void nyuarchivo1(char* nyuadnsips) {

   printf("El archivo dnsips.txt ya ha sido creado, adivina acontinuacion nombre y ubicacion ");

   if (fgets(nyuadnsips, MAX_SIZE, stdin) == NULL) {

      printf("Mal, mal empezamos no se guardo ni el nombre ni la ubicacion");

      return;

   }

   nyuadnsips[strcspn(nyuadnsips, "\n")] = '\0';

   printf("El nombre que figura dentro de la cadena es: %s", nyuadnsips);
   printf("\n \n");

   FILE* archivo1 = fopen(nyuadnsips, "r");

   if (archivo1 == NULL) {

      printf("ERROR, el archivo realmente noe existe");

      return;

   }

   int c;

   while ((c=fgetc(archivo1)) != EOF) {

      putchar(c);

   }

   fclose(archivo1);
}

void adns(char* dns, char* primernetsh) {

   printf("¿Que adaptador de red que quiere modificar?");

   if (fgets(dns, MAX_SIZE, stdin) == NULL) {

      printf("Mal, mal empezamos no es un buen reciclaje");

      return;

   }

   dns[strcspn(dns, "\n")] = '\0';

   printf("El nombre que figura dentro de la cadena es: %s", dns);
   printf("\n \n");

   snprintf(primernetsh, MAX_SIZE, "netsh interface ip show dns name= \"%s\"",dns);
   
   int resultado=system(primernetsh);

}

void ccpings(char* cadena1, char* cadena2, char* cadena3, char* cadena4, char* ping1, char* ping2, char* ping3, char* ping4) {

   FILE* temporal = tmpfile();

   if (temporal == NULL) {

      printf("Primer archivo temporal fallido");

      return;

   }

   printf("AHORA, el siguiente paso   es hacer un ping a las IPs, para eso, hay que ponerlas en cadenas, despues sera necesario, usar la snetencia snprintf, otra vez, para construir los comandos pings que comprobaran cuales son viables, ¿OK? y si sera hacer la cadena y hacer el ping a esa cadena, no esperaremos a tenerlas todas, asi de esa manera trabajamos con ellas individualmente: ");

   printf("Cadena 1: ");

   if (fgets(cadena1, MAX_SIZE, stdin) == NULL) {

      printf("Mal, mal empezamos no es un buen reciclaje");

      return;

   }

   cadena1[strcspn(cadena1, "\n")] = '\0';

   printf("\n \n");
   printf("YYY  la  IP numero 1   essss: %s", cadena1);
   printf("\n \n");
   printf("Y Ahoora el piing");
   printf("\n \n");

   snprintf(ping1, MAX_SIZE, "ping -n 4 %s", cadena1);
   int valor1 = system(ping1);

   if (valor1 != 0) {

      fprintf(temporal, "%s", cadena1);
      
   }

   fclose(temporal);
}


int main() {

   
   char nyuadnsips[MAX_SIZE]="D:\\Dnsips.txt";
   char dns[MAX_SIZE];
   char primernetsh[MAX_SIZE];
   char cadena1[MAX_SIZE];
   char cadena2[MAX_SIZE];
   char cadena3[MAX_SIZE];
   char cadena4[MAX_SIZE];
   char ping1[MAX_SIZE];
   char ping2[MAX_SIZE];
   char ping3[MAX_SIZE];
   char ping4[MAX_SIZE];
   

   printf("\n");
   nyuarchivo1(nyuadnsips);
   printf("\n");
   adns(dns, primernetsh);
   ccpings(cadena1, cadena2, cadena3, cadena4, ping1, ping2, ping3, ping4);

   return 0;
}

Estoy buscando el archivo temporal en C: Windows Temp pero no me sale ningun archivo creado con el nombre temporal quisiera saber, ¿Mi codigo es correcto?, ¿Hay algo mal en la funcion ccpings, que haga que no se cree el archivo temporal?
2  Programación / Programación C/C++ / sentencia switch en: 27 Septiembre 2024, 18:21 pm
Hola

tengo el siguiente codigo:


int main(void) {

   int numero;
   numero = 0;

   char nyu[MAX_SIZE]="D:\\producto2.txt"; //esta es la cadena donde guardaremos la ubicación y nombre del archivo
                                           //debido a que le daremos esa información concreta, "hay que iniciarla" 

   printf("A continuación se mostraran diferentes opciones, cada una hace una cosa diferente \n");
   printf("Opción 1: Insertar la hora y la fecha en el documento de salida: producto2.txt \n");
   printf("Opción 2: Comprobar e informar por pantalla sobre cuáles de una lista de máquinas referenciadas por su IP escrita en un archivo de texto, contestan positivamente a un ping lanzado por la aplicación que estás programando \n");
   printf("Opción 3: Mostrar y guardar en un fichero llamado adaptador.txt, la configuración de red de la máquina local para un adaptador que previamente se preguntará al usuario \n");

   printf("Selecciona una opción : \n");
   
   if(scanf("%d", &numero) != 1) {
   
      printf("ERROR: Programa mal escrito\n");
      
      return 0;
   
   }

   switch(numero){

   case 1:

      printf("A continuación, se creara un archivo, para ello se te pedira el nombre y la ubicación  \n \n");

      printf("Introduce el nombre y la ubicación del archivo \n");

   

   break;



   }

   

   return 0;

}

Mi pregunta es ¿Por que si en vez de tener el código como lo tengo, pongo: (scanf("%d", &numero), me dice que le falta un argumento,

¿switch requiere de if?
3  Programación / Programación C/C++ / Opinion en: 16 Julio 2024, 18:56 pm
Buenas tardes estoy haciendo este programa que deberia:


Preguntar el nombre y la ruta del archivo dnsips.txt y mostrar  el contenido de este archivo por pantalla.

Preguntar al usuario el adaptador de red que quiere modificar y mostrar los servidores DNS configurados en este.

y me gustaria conocer vuestras opiniones y sugerencias


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


#define MAX_SIZE 130



void nombreyubicacion();
void adaptador();

void nombreyubicacion() {
   
    char archivo[MAX_SIZE];

    printf("Introduce el nombre que tendra tu archivo Y el buffer en el que se almacenara: \n\n");

    if (fgets(archivo, MAX_SIZE, stdin) != NULL) {
   
        size_t len = strlen(archivo);
       
        if (len > 0 && archivo[len - 1] == '\n') {
       
            archivo[len - 1] = '\0';
       
        }

        printf("B\n\n");
    }

    FILE* descargado = fopen(archivo, "r");
 
    if (descargado == NULL) {
   
        printf("A\n");
       
        return;
   
    }

   int c;

   while ((c = fgetc(descargado)) != EOF) {
   
      putchar(c);
   
   }

   fclose(descargado);
}

void adaptador() {

    char adaptador[MAX_SIZE];

    system("ipconfig");

    printf("Escribe el nombre del adaptador de red que vas a modificar: \n\n");

    if (fgets(adaptador, MAX_SIZE, stdin) != NULL) {
     
        size_t len = strlen(adaptador);

        if (len > 0 && adaptador[len - 1] == '\n') {

            adaptador[len - 1] = '\0';
        }

        printf("Adaptador de red introducido: %s\n", adaptador);
    }
    else {

        printf("B\n");

    }
}


int main() {

   

   nombreyubicacion();
 
    adaptador();

    return 0;
   
4  Programación / Programación C/C++ / Funcion en C que pide al usuario un numero introducido por pantalla en: 5 Julio 2024, 12:00 pm
Buenos días estoy intentando hacer una función que pida al usuario ingresar un numero por pantalla, pero Visual estudio me dice que se omite el valor  devuelto scanf,

Esta es la función:

int pedir_numero() {

    int numero;

    printf("dime un numero: ");
    scanf("%d", &numero);

    return numero;

}

y este es el código al completo:


#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

void cotorreo();
int pedir_numero();
void fechayhora();

void cotorreo() {

    printf("En este programa hay 3 opciones diferentes que se detallan a continuación, para acceder a ellas, se te pedira un numero que tiene que estar entre el 1 y el 3, introducelo \n \n");

    printf("Opción 1: Insertar la fecha y la hora en el documento de salida: producto2.txt \n \n");
    printf("Opción 2: Comprobar e informar por pantalla sobre cuáles de una lista de máquinas referenciadas por su IP escrita en un archivo de texto, contestan positivamente a un ping lanzado por la aplicación que estás programando. Se recomienda generar un submenú donde se solicite el nombre y ubicación de dicho archivo. \n \n");
    printf("Opción 3: Mostrar y guardar en un fichero llamado adaptador.txt, la configuración de red de la máquina local para un adaptador que previamente se preguntará al usuario \n \n");

}

int pedir_numero() {

    int numero;

    printf("dime un numero: ");
    scanf("%d", &numero);

    return numero;

}

void fechayhora() {

    time_t t = time(NULL);
    struct tm tm = *localtime(&t);

}



int main(void) {


    cotorreo();
    int num = pedir_numero();
    fechayhora();

    return 0;

}


Sospecho que la razón es un error lógico, probablemente que le falte algo a al función, pero e probado diferentes soluciones como añadir punteros, iniciar el valor etc. y me sigue apareciendo, ¿Alguien puede decirme el error?


5  Programación / Programación C/C++ / Algoritmo de numeros compuestos en: 14 Noviembre 2023, 23:31 pm
Hola de nyevo:

Estoy intentando codificar en C este algoritmo:


      
Código:
algoritmo  BuscaDivisoresMultiplicadosIgualesNumero
            var
                        num, divisor1, divisor2, divisor3: entero;
            fvar


            num := leerEntero( );

            mientras  (num ≠ -1) hacer    
                        buscadivisor1(num, divisor1, divisor2,divisor3);  

                        si loEs(num, divisor1, divisor2,divisor3)  entonces
                                          printaExito(num, divisor1, divisor2,divisor3

                        sino
                                          printaFracaso(num);

                         fsi  


                         num := leerEntero( );

            fmientras


       falgoritmo
 

      accion printaExito( ent a: entero, ent b: entero, ent c: entero, ent d: entero )


                  escribirCadena(‘El número: ‘);
                  escribirEntero(a);

                  escribirCadena(‘ es igual a  ‘);

                  escribirEntero(b);

                  escribirCadena(‘ multiplicado por  ‘);

                  escribirEntero(c);  

                  escribirCadena(‘ y por ‘);

                  escribirEntero(d);  

            fsi        

      faccion


      accion printaFracaso(ent a: entero)
            escribirCadena(‘El número: ‘);
            escribirEntero(a);
            escribirCadena(‘ no tiene divisores diferentes de 1 que multiplicados sean igual a el. ‘);
      faccion


      funcion loEs(ent x: entero,ent y:entero,ent z: entero, ent w: entero): booleano;

                        retorna x = (y * z * w);            
      ffuncion


      accion buscadivisor1(ent n: entero, sal d1: entero, sal d2: entero, sal d3: entero )
            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d1:=2;

            d2:=2;

            d3:=2;

            mientras  d1<=(n div 2) y no encontrado  hacer
                  buscadivisor2 (n,d1,d2,d3);
                  encontrado:= loEs (n,d1,d2,d3);

                   si   no encontrado  entonces

                           d1:=d1+1;

                   fsi  
            fmientras
      faccion
 

      accion buscadivisor2( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero  )

            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d2:=2;

            d3:=2;

            mientras  d2 <= (num div 2) y no encontrado  hacer
                  buscadivisor3(num,d1,d2,d3);  

                 encontrado:= loEs (num,d1,d2,d3);
                  si no encontrado  entonces
                        d2:=d2+1;
                  fsi      
            fmientras
      faccion

 

      accion buscadivisor3( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero  )

            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d3:=2;

            mientras  d3 <= (num div 2) y no encontrado  hacer

                 encontrado:= loEs (num,d1,d2,d3);
                  si no encontrado  entonces
                        d3:=d3+1;
                  fsi      
            fmientras
      faccion

Tengo la teoria de que en la prkmera oarte hay que yacer un bucle while que busque divisores, lo de printar  las cadenas  eso lo tengo solucionado, pero lo qye desconozco es como codificar el resto, el resultado, deberia dar un programa el cual te muestra 3 numeros que multiplicados entre si dan el numero introducido

¿Alguien puede ayudarme a codificar el algoritmo?
6  Programación / Programación C/C++ / Contador en: 7 Noviembre 2023, 18:02 pm
Hola

Alguien sabe el porque el contador no se incrementa?

Código
  1. printf("es tu turno jugador, se ha generado tu array y ahora vas a llenarlo \n");
  2.    printf("recuerda que has de usar numeros del 1 al 4\n");
  3.  
  4.    do {
  5.  
  6.  
  7.        printf("Introduce el entero del 1 al 4 numero %d: ",contador);
  8.        scanf("%d",&numero);
  9.  
  10.  
  11.        if((numero>=1)&&(numero<=4)) {
  12.  
  13.            printf("Introduce el entero del 1 al 4 numero %d: ",contador);
  14.            printf("\n");
  15.  
  16.            jugador[numeros];
  17.  
  18.            scanf("%d",&jugador[0]);
  19.            scanf("%d",&jugador[1]);
  20.            scanf("%d",&jugador[2]);
  21.            scanf("%d",&jugador[3]);
  22.            scanf("%d",&jugador[4]);
  23.            scanf("%d",&jugador[5]);
  24.            scanf("%d",&jugador[6]);
  25.            scanf("%d",&jugador[7]);
  26.            scanf("%d",&jugador[8]);
  27.            scanf("%d",&jugador[9]);          
  28.  
  29.        } else {
  30.  
  31.            printf("\n");
  32.            printf("B");
  33.            printf("\n");
  34.  
  35.        }
  36.  
  37.  
  38. contador +=1;
  39. |
7  Programación / Programación C/C++ / Funcion que muestre aciertos y porcentaje en: 4 Noviembre 2023, 21:19 pm
Hola de nuevo,

tengo este codigo:


int porcentaje_aciertos() {

    int f,aciertos,valordelarreglo,valordelotroarreglo, num, porcentaje, numeros_introducidos, arrayjugador;


    aciertos = 0;

    for(f = 0; f < num; f++) {

        valordelarreglo = numeros_introducidos[f], valordelotroarreglo = arrayjugador[f];

        if(valordelarreglo == valordelotroarreglo) {

            aciertos +=1;

        }

    }
   
    porcentaje = (aciertos / num) * 100;

printf("Has acertado %d de: %d", aciertos,num);
printf("Es el %d porciento",porcentaje);
}

que deberia mostrar aciertos y porcentajes, pero me da un error en la linia de: 
        valordelarreglo = numeros_introducidos[f], valordelotroarreglo = arrayjugador ¿ALguien puede decirme por que me dice que no es puntero ni array?
8  Programación / Programación C/C++ / Omparacion de 2 arrays en: 1 Noviembre 2023, 19:41 pm
Hola estaba por responder el otro tema con el mismo nombre, pero me salio una advertencia, asi que inicio nuevo tema:

Veran estoy intentando solventar esto:

Función “numeroNumeroAciertos”. Devuelve el número de aciertos que ha tenido el usuario.

Se trata de hacer 2 arrays que se deben comparar, tengo entendido que primero debes comparar su tamaño y luego valor a valor cada posición, esto es lo poco que he conseguido, lo que no condigo ss hacer la comparativa y 2 for anidados, algo que no entiendo del todo:

void numeros_de_aciertos() {

//elementos a comparar
//contador de aciertos aciertos
//comparación con if
//bucle

    int f, aciertos,arrayjugador[10],numeroaleatorio[10];

    aciertos = 1;

    int longituddelarreglo = sizeof(arrayjugador) / sizeof(arrayjugador[10]);
    int longituddelotroarreglo = sizeof(numeroaleatorio) / sizeof(numeroaleatorio[10]);

    if(longituddelarreglo !=longituddelotroarreglo) {

        printf("los arreglos no son iguales");

       
    }

}

Si alguien me explicara el procedemiento


9  Programación / Programación C/C++ / Pasar a c en: 27 Octubre 2023, 20:31 pm
Hola

Estoy intentando codifixar a a C este pseudocodigo, ¿Alguien puede indicarme algunos conceptos como cadena?, no estoy seguro a si se refiere a array

Código:
var
                        num, divisor1, divisor2, divisor3: entero;
            fvar

            num := leerEntero( );

            mientras  (num ≠ -1) hacer    
                        buscadivisor1(num, divisor1, divisor2,divisor3);  

                        si loEs(num, divisor1, divisor2,divisor3)  entonces
                                          printaExito(num, divisor1, divisor2,divisor3

                        sino
                                          printaFracaso(num);

                         fsi  

                         num := leerEntero( );

            fmientras


       falgoritmo
 

      accion printaExito( ent a: entero, ent b: entero, ent c: entero, ent d: entero )


                  escribirCadena(‘El número: ‘);
                  escribirEntero(a);

                  escribirCadena(‘ es igual a  ‘);

                  escribirEntero(b);

                  escribirCadena(‘ multiplicado por  ‘);

                  escribirEntero(c);  

                  escribirCadena(‘ y por ‘);

                  escribirEntero(d);  

            fsi        

      faccion


      accion printaFracaso(ent a: entero)
            escribirCadena(‘El número: ‘);
            escribirEntero(a);
            escribirCadena(‘ no tiene divisores diferentes de 1 que multiplicados sean igual a el. ‘);
      faccion

      funcion loEs(ent x: entero,ent y:entero,ent z: entero, ent w: entero): booleano;

                        retorna x = (y * z * w);            
      ffuncion

      accion buscadivisor1(ent n: entero, sal d1: entero, sal d2: entero, sal d3: entero )
            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d1:=2;

            d2:=2;

            d3:=2;

            mientras  d1<=(n div 2) y no encontrado  hacer
                  buscadivisor2 (n,d1,d2,d3);
                  encontrado:= loEs (n,d1,d2,d3);

                   si   no encontrado  entonces

                           d1:=d1+1;

                   fsi  
            fmientras
      faccion
 
      accion buscadivisor2( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero  )

            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d2:=2;

            d3:=2;

            mientras  d2 <= (num div 2) y no encontrado  hacer
                  buscadivisor3(num,d1,d2,d3);  

                 encontrado:= loEs (num,d1,d2,d3);
                  si no encontrado  entonces
                        d2:=d2+1;
                  fsi      
            fmientras
      faccion

      accion buscadivisor3( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero  )

            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d3:=2;

            mientras  d3 <= (num div 2) y no encontrado  hacer

                 encontrado:= loEs (num,d1,d2,d3);
                  si no encontrado  entonces
                        d3:=d3+1;
                  fsi      
            fmientras
      faccion
¿Por otro lado alguien sabe de algun codificador a C?
10  Programación / Programación C/C++ / Función pedir un a llenar un array en: 26 Octubre 2023, 19:37 pm
Hola

Intento desarrollar jna función para un juego de memorua, consistenete en:

Llenar un array con números enteros, comprendidos entre el 1 y el 4, pedidos al usuario. Si el usuario introduce un número no comprendido en ese rango, se le vuelve a pedir hasta que cumpla
las especificaciones. El array tiene máximo 10 posiciones y se llenarán las que se indiquen por parámetro de entrada que coincidirán con las generadas aleatoriamente.

Asi es como intento solucionarlo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void arrayjugador() {
  6.  
  7.    int num,numero2,numero3,numero4,numero5,numero6,numero7,numero8,numero9,numero10;
  8.  
  9.    int numero[10] = {2,3,4,1,2,3,4,4,1,3};
  10.    numero[0] = 2;
  11.    numero[1] = 3;
  12.    numero[2] = 4;
  13.    numero[3] = 1;
  14.    numero[4] = 2;
  15.    numero[5] = 3;
  16.    numero[6] = 4;
  17.    numero[7] = 4;
  18.    numero[8] = 1;
  19.    numero[9] = 3;
  20.  
  21.    printf("Introduce diez numeros desde el 1 al 4");
  22.  
  23.    scanf("%d",&numero[0]);
  24.    scanf("%d",&numero[1]);
  25.    scanf("%d",&numero[2]);
  26.    scanf("%d",&numero[3]);
  27.    scanf("%d",&numero[4]);
  28.    scanf("%d",&numero[5]);
  29.    scanf("%d",&numero[6]);
  30.    scanf("%d",&numero[7]);
  31.    scanf("%d",&numero[8]);
  32.    scanf("%d",&numero[9]);
  33.    scanf("%d",&numero[10]);
  34.  
  35.    if((numero < 0)) && ((numero > 5)) {
  36.  
  37.        do {
  38.  
  39.            printf("Introduce diez numeros desde el 1 al 4");
  40.  
  41.        } while(numero < 0) && (numero > 5)
  42.  
  43.    }
  44.  
  45. }
  46.  
Lo que no estoy seguro de que se solucione dd esta manera si slguien me pudiera almenos indicar el camino  correcto, seria de ageadecer
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines