Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: bendroide en Noviembre 23, 2012, 02:57:48 AM

Título: [SOLUCIONADO] Ayuda a comentar este programa en C
Publicado por: bendroide en Noviembre 23, 2012, 02:57:48 AM
hola gente de underc0de, soy nuevo en esto de C y estoy tratando de comentar este programa alguien me puede dar una mano...

#include <stdio.h>
/*libreria estandar de C ANSI*/
#include <windows.h>
/*usando la API de windows,etc*/
int main(int args, char *argv[] )
/*funcion entera principal
* con argumento args entera que contiene el numero de argumentos recibidos por el programa
* segundo argumento: apuntador a un array de chars qye contiene los parametros
*pasados en el mismo orden en que fueron escritos
*/
FILE *f1, *f2; //archivos en text plain 1 para escribir la frase a cifrar y la otra donse se guarda
char *key; //llave tipo caracter para poder encriptar/desencriptar
int c; //variable tipo entera

key = argv[1];
if(*key !='\0')
{
f1= fopen(argv[2], "rb");
if(f1 !=NULL){
f2=fopen (argv[3], "wb");
if(f2 !=NULL){
while ((c=getc(f1)) !=EOF)
{
if(!*key) key=argv[1];
c ^=*(key++);

putc(c, f2);
}
fclose(f2);

}
fclose(f1);

}

}

return 1;

}
Título: Re:ayuda a comentar este programa en C
Publicado por: JAG en Noviembre 23, 2012, 07:04:42 AM

#include <stdio.h>
/*libreria estandar de C ANSI*/
#include <windows.h>
/*usando la API de windows,etc*/
int main(int args, char *argv[] )
/*funcion entera principal
* con argumento args entera que contiene el numero de argumentos recibidos por el programa
* segundo argumento: apuntador a un array de chars qye contiene los parametros
*pasados en el mismo orden en que fueron escritos
*/
FILE *f1, *f2; //archivos en text plain 1 para escribir la frase a cifrar y la otra donse se guarda
        char *key; //llave tipo caracter para poder encriptar/desencriptar
        int c; //variable tipo entera
       
        key = argv[1]; //Pasamos el valor de la key
        if(*key !='\0') //Miramos que la key no esté vacia
        {
        f1= fopen(argv[2], "rb"); //Abrimos el archivo en modo lectura
        if(f1 !=NULL){ //Miramos que no haya habido error al abrir el archivo
                f2=fopen (argv[3], "wb"); //Abrimos el segundo archivo en modo escritura
                if(f2 !=NULL){ //Miramos que no haya habido error al abrir el archivo
                        while ((c=getc(f1)) !=EOF) //Mientras no se llegue al final de fichero
                        {
                        if(!*key) key=argv[1]; // Si no existe key se le vuelve a pasar
                        c ^=*(key++); // Hace una operacion modificando c
                       
                        putc(c, f2); //Escribimos el valor de c en el fichero f2
                        }
                        fclose(f2); //Cerramos f2
                       
                        }
                        fclose(f1); //Cerramos f1
       
                }
               
        }
       
return 1;

}


Ahí te lo he comentado un poco todo más o menos... si no entiendes algo avisas ok? Saludos!!
Título: Re:ayuda a comentar este programa en C
Publicado por: bendroide en Noviembre 23, 2012, 06:00:47 PM
char *argv[]  para que me sirve ese apuntador de arrays basicamente, otra cosa en C existe una funcion para poder meter codigo asm en C no, cual seria esa :DDDD y como se haria (?) que mas o menos tendria que leer para poder hacerlo.

saludos
Título: Re:ayuda a comentar este programa en C
Publicado por: JAG en Noviembre 24, 2012, 05:11:40 PM
En cuanto a lo de meter código ensamblador en C no tengo ni idea, nunca lo hice. De todas formas puedes mirarte el siguiente documento, quizás te sirva.
Link: http://atc.ugr.es/docencia/udigital/13.html

*argv[] y argc es utilizado para que el programa pueda recibir los parámetros que le pasamos al llamar a este. argc es el número de parámetros que han sido pasados y argv es el array donde están contenidos dichos parámetros. Te pongo un ejemplo y enseguida lo entenderás:

yo ejecuto el programa de la siguiente forma: ./miPrograma fichero.txt
Solo le he pasado el nombre del programa y un fichero donde escribir o leer por poner un ejemplo, esto quedará reflejado en argc, el número de parámetros. *argv[] contiene estas cadenas de caracteres que yo les he pasado para poder usarlas internamente en el programa. En tu caso argc valdrá 3 (aunque no haces la comprobación y siempre es recomendable hacerla y si no se pasan los 3 parámetros que salte un error). Para ti argv[1] contiene una cadena para encriptar y desencriptar, argv[2] y [3] contienen nombre de fichero para interactuar con ellos. Espero haberte servido de ayuda, no se me da muy bien explicar xD Saludos!!