|
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: 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? printf("es tu turno jugador, se ha generado tu array y ahora vas a llenarlo \n"); printf("recuerda que has de usar numeros del 1 al 4\n"); do { printf("Introduce el entero del 1 al 4 numero %d: ",contador); scanf("%d",&numero); if((numero>=1)&&(numero<=4)) { printf("Introduce el entero del 1 al 4 numero %d: ",contador); printf("\n"); jugador[numeros]; scanf("%d",&jugador[0]); scanf("%d",&jugador[1]); scanf("%d",&jugador[2]); scanf("%d",&jugador[3]); scanf("%d",&jugador[4]); scanf("%d",&jugador[5]); scanf("%d",&jugador[6]); scanf("%d",&jugador[7]); scanf("%d",&jugador[8]); scanf("%d",&jugador[9]); } else { printf("\n"); printf("B"); printf("\n"); } contador +=1; |
|
|
|
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 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: #include <stdio.h> #include <stdlib.h> #include <time.h> void arrayjugador() { int num,numero2,numero3,numero4,numero5,numero6,numero7,numero8,numero9,numero10; int numero[10] = {2,3,4,1,2,3,4,4,1,3}; numero[0] = 2; numero[1] = 3; numero[2] = 4; numero[3] = 1; numero[4] = 2; numero[5] = 3; numero[6] = 4; numero[7] = 4; numero[8] = 1; numero[9] = 3; printf("Introduce diez numeros desde el 1 al 4"); if((numero < 0)) && ((numero > 5)) { do { printf("Introduce diez numeros desde el 1 al 4"); } while(numero < 0) && (numero > 5) } }
Lo que no estoy seguro de que se solucione dd esta manera si slguien me pudiera almenos indicar el camino correcto, seria de ageadecer
|
|
|
|
|
|
|