Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - AlbertoBSD

#361
Hola que tal, hace muchos años, usaba codigo javascript, Tambien llegue automatizar muchas cosas usando VBA desde excel, siendo que odiaba el lenguaje me sirvio mucho para mis trabajos.

Desde la consola sigue aceptando codigo javascript intenta con un

Código (javascript) [Seleccionar]
alert(document.title);

Puedes leer el siguien link y cargarlo como un plugin de chrome:

https://support.google.com/chrome/a/answer/2714278?hl=es
#362
Tu problema principal es que todavia quedan datos en el buffer de entrada, te recomiendo que leas
¿Queda algo en el Buffer de Entrada stdin? (Solucionado)


Utiliza las etiqutas para codigo


entrar_opcion_si_no = 1;
do{
printf("Desea segir ingresando mas datos? (s/n)\n");
fgets(temp,10,stdin);
switch(tolower(temp[0])) {
case 's':
entrar_opcion_si_no = 0;
printf("Selecciono SI\n");
break;
case 'n':
entrar_opcion_si_no = 0;
printf("Selecciono NO\n");
entrar = 0; // Se cambia la variable para salir del menu principal
break;
default:
printf("opcion incorrecta, solo 's' o 'n'\n");
break;
}
}while(entrar_opcion_si_no == 1);


Otra cosa, se que estas empezado, pero como recomendacion deja de utlizar funciones fancy ( funciones de adorno ) y concentrate en aprender las estrucutras basicas

Es decir quita todo esto:



printf("\n\n\n\n\n\t ANTES DE CONTINUAR .........");
printf("\n\n\n\n\n\t                   FAVOR MAXIMIZAR LA PANTALLA DE EJECUCION DE C .........\n\n\n\n");
printf("\n\n\n\n\n .............");
system("pause");
system("cls");


Y tambien deja de utilizar conio.h no es una libreria estandar


Me tome la molestia de re-escribir tu programa con varia modificaciones.


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

int main() {
char frase[50], frase2[50];
char temp[10];
int entrar = 1;
int  i=0,entrar_opcion_si_no;
do {
printf("PROGRAMA PIDE 2 FRASES, PRIMERO LAS COMPARA A VER SI SON IGUALES, LUEGO BUSCA LA SEGUNDA DENTRO DE LA PRIMERA Y POR ULTIMO NOS DICE CUAL ES MAYOR\n");
printf("Ingrese frase 1 maximo 50 caracteres \n");
fgets(frase,50,stdin);
fseek(stdin, 0, SEEK_END);
frase[strcspn(frase,"\n\r")] = '\0';
printf("Ingrese frase 2 maximo 50 caracteres \n");
fgets(frase2,50,stdin);
fseek(stdin, 0, SEEK_END);
frase2[strcspn(frase2,"\n\r")] = '\0';

printf("Primero vamos a compararlas si son iguales o no ...\n");

if (strcmp(frase,frase2)==0) {
printf("La frase 1 \"%s\" es IGUAL a la frase 2 \"%s\"",frase, frase2);
printf(" y la frase 2 esta dentro de la frase 1");
}
else {
printf("La frase 1 \"%s\" es DIFERENTE a lab frase 2 \"%s\"\n",frase, frase2);
if (strcmp (frase,frase2)>0)
printf("La frase 1 es MAYOR que la frase 2\n");
else
printf("La frase 1 es MENOR que la frase 2 oooooo la frase2 MAYOR que la frase1.. como quieras vaso medio lleno vaso medio vacio jejeje\n");
}

if (strstr(frase,frase2)==NULL)
printf("La frase 2 NO esta incluida en la frase 1\n");
else
printf("La frase 2 SI esta incluida en la frase 1\n");  

entrar_opcion_si_no = 1;
do{
printf("Desea segir ingresando mas datos? (s/n)\n");
fgets(temp,10,stdin);
switch(tolower(temp[0])) {
case 's':
entrar_opcion_si_no = 0;
printf("Selecciono SI\n");
break;
case 'n':
entrar_opcion_si_no = 0;
printf("Selecciono NO\n");
entrar = 0; // Se cambia la variable para salir del menu principal
break;
default:
printf("opcion incorrecta, solo 's' o 'n'\n");
break;
}
fseek(stdin, 0, SEEK_END);
}while(entrar_opcion_si_no == 1);
}while(entrar);
return 0;
}


Le quite la condición donde evalúas si son mayores a 50 de longitud, ya que con fgets limitas eso:
#363
Cita de: CalgaryCorpus en  5 Diciembre 2018, 01:50 AM
Esto puede servir:

https://stackoverflow.com/questions/1312922/detect-if-stdin-is-a-terminal-or-pipe


Interesante si funciono en Windows  ;-)


#include<stdio.h>
#include<unistd.h>

int main() {
if (!isatty(fileno(stdin))){
char temp[100];
fgets(temp,100,stdin);
printf("%s",temp);
}
}
#364
hay que saber lo que se esta haciendo con el operador de modulo, solo devuelve el residuo de la division

rand() % 10

Solo genera números del 0 al 9 ya que son los residuos posibles al dividir cualquier numero entre 10

1 + rand() % 10

Solo genera numeros del 1 al 10 ya que seria 1 + los numeros del 0 al 9, si haces la suma te dara numeros del 1 al 10

Por cierto tienes error en el printf

MAL
printf (contador, "%d%c",  rand() % 10, '\n');

deberia de ser

printf ("%d\n",  rand() % 10);

Por lo visto lo tratas de usar como si fuera cout, yes muy distinto el comportamiento

Saludos
#365
Pero segun tengo entendido la factura de luz de los routers se va a pagar esten o no esten minando croiptos..

Asi que realmente no deberia de exister queja, lo malo es cuando usan los routers para realizar DDoS, ahi si no se puede hacer nada por que son perdidadas economicas.

Saludos!
#366
Cita de: CalgaryCorpus en  5 Diciembre 2018, 00:02 AM
Si presionas ^D (Control D) en linux o ^Z en windows, generas un eof para la entrada estandar.

Interesante, si es cierto que cuand quiero salir de una terminal linux rapidamente presiono control D y para windows no me sabia lo del control z.

Sin embargo el OP trata de automatizar alguna tarea, que cuando envie texto mediante Echo al programa, este lo capture y lo procese, y cuando envié alguna cadena vacia, no se quede esperando el programa.

Saludos!
#367
Ya entendi, lo que quieres es que si hay algo en la entrada estandar lo procese, si no, simplemente termine.

te convendría revisar el siguiente tema ¿Queda algo en el Buffer de Entrada stdin? (Solucionado)



Asi no se puede hacer lo que dices con metodos estadar (Segun creo no se puede).

El punto esta en que la mayoria de las funciones tipo getchar, getc, fgets etc......  se quedan esperando entrada hasta que lea algo.

Yo intenten validar si habia algo en la entrada estandar mediante el uso de feof, pero resulta que para Stdin nunca es el FIN del archivo, como lo muestro en una de las replies el link que te pase. sin embargo no se si funcione para el metodo que muestras de echo .... o type. Voy a probarlo y te comento.

Saludos
#368
Programación C/C++ / Re: Compilar C/C++ en Windows
4 Diciembre 2018, 22:14 PM
Yo utilizo Notepad++ y de compilador el Gcc de mingw

http://www.mingw.org/

Saludos
#369
Cita de: snowspring en  4 Diciembre 2018, 19:47 PM
He leido que con un execl cambiando el argumento argv[0] por "hijo" debería de funcionar pero no me funciona.


int execl(const char *path, const char *arg, ...);

The const char *arg and subsequent ellipses in the execl(), execlp(), and execle() functions can be thought of as arg0, arg1, ..., argn.

Eso solo modifica los parametros que procesa el programa llamado mediante execl. normalemnte el argv[0] es el nombre del programa, pero eso solo cambia la forma en la que el programa se ve asi mismo, para el sistema operativo el proceso va seguir teniendo el nombre original.

Si quieres cambiar el nombre del proceso listado en el PS, tienes que "rootkitear" tu sistema operativo y controlar la forma en la que el PS actual afectandi directamente la informacion  que PS esta leyendo actualmente.


Saludos



#370
Cita de: fileteruso en  4 Diciembre 2018, 18:50 PM
echo "123456" | ./programa

Eso es como si ejecutaras el programa y este pidera informacion
Ingrese el numero X:
Entonces lo que le pasaste como 123456 mediante el Echo se ingresa en esa primera pregunta ya sea un scanf o un fgets o un cin

Ejemplo:

#include<stdio.h> //Funciones printf, fgets
#include<string.h> //Funciones printf, fgets


int main() {
char temp[100];
do {
printf("> ");
fgets(temp,100,stdin);
printf("Escribio : %s",temp);
}while(strncmp(temp,"exit",4));
}


entrada.txt

hola
esto es una pruba
de codigo al salir con
exit




Saludos