Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AliceLopez14 en 23 Marzo 2015, 01:17 am



Título: Ayuda con cifrar un texto mediante ascci u.u
Publicado por: AliceLopez14 en 23 Marzo 2015, 01:17 am
Hola a todos :3
Tengo un problema con un programa que me pidieron en la uni ,no se como terminarlo lo que debe hacer el programa es cifrar una agenda sumandole 3 numeros a su valor ascii y no se como hacerlo ,no me sale les envio lo que tengo de codigo,
Código:
#include <stdio.h>
#include <stdlib.h>
 struct contacto //Declaracion de una estructura
{
  char nombre[50];
  char cel[15];
  char casa[15];
  unsigned char correo[50];
};

void lee(struct contacto *a,int tamanio);//Funcion que lee
    // void imprime(struct contacto *b,int tamanio);//Funcion que imprime
     void codificar(struct contacto *b, int tamanio);// Funcion que cambia el texto
     void grabar_archivo( FILE *archivo, struct contacto *a, int tamanio);//Función que guarda datos en archivo

 int main(int argc, char* argv[])
 {  //Abre funcion principal
    int tamanio;//Declaracion de variable entera para leer tamaño
    struct contacto *datos=NULL; //Apuntador a estructura
    struct contacto guardar;//Variable de estructura
    datos= &guardar;//Se asigna la direccion de memoria a apuntador
    FILE *archivo=NULL;

  printf("\n\n\tIngrese el numero de Contactos: ");//Imprime Mensaje
  scanf("%d",&tamanio);//Lee el tamaño deseado
  datos=(struct contacto*)calloc(tamanio,sizeof(struct contacto));
  //Reservar memoria para ingresar los contactos
  if (datos==NULL)//Verifica que exista espacio para reservar la memoria
{
printf("No se puede reservar memoria");
exit(0);
}
  lee(datos, tamanio);//Funcion para leer
  //imprime (datos, tamanio);//Funcion que imprime
  codificar(datos, tamanio);
  grabar_archivo(archivo, datos, tamanio);
  system ("cls");
  free (datos); //funcion que libera la memoria
  printf("\n\n\t\tDatos guardados con exito...\n\n");
  return 0;
 }

 void lee(struct contacto *a,int tamanio)
 {
  int c;
  for(c=0 ;c<tamanio; c++)
{

printf("\n\n\tContacto %d",c+1);
fflush(stdin);
printf("\n\n\tIngresa el nombre del contacto: ");
gets((a+c)->nombre);
printf("\n\n\tIngresa su telefono celular: ");
gets((a+c)->cel);
printf("\n\n\tIngresa su telefono de casa: ");
gets((a+c)->casa);
printf("\n\n\tIngresa el correo electronico: ");
gets((a+c)->correo);
fflush(stdin);
}
system ("cls");
 }



void imprime(struct contacto *b,int tamanio)
{
int c;
printf("\tNombre\t\tCelular\t\tCasa\t\tCorreo\n\n");
for(c=0; c<tamanio; c++)
   {
  printf("%d\t%s\t\t%s\t\t%s\t\t%s\n\n",c+1,(b+c)->nombre,(b+c)->cel,(b+c)->casa,(b+c)->correo);
  }
  getchar();
  fflush(stdin);
}



void grabar_archivo(FILE *archivo, struct contacto *a, int tamanio)
{
    int c;
    archivo=fopen("Contactos.txt","a+" );

    if (archivo==NULL){
        printf("\n\tError al abrir el archivo...");
        exit (0);}

    for(c=0; c<tamanio; c++)
fprintf(archivo,"%s\t%s\t%s\t%s\n",(a+c)->nombre,(a+c)->cel,(a+c)->casa,(a+c)->correo);

    fclose (archivo);
}

void codificar(struct contacto *b, int tamanio){AQUI DEBO PONER LA FUNCION QUE ENCRIPTE EL TEXTO

[code=c]
[/code]
Espero me puedan ayudar se los agradecere mucho :-[


Título: Re: Ayuda con cifrar un texto mediante ascci u.u
Publicado por: engel lex en 23 Marzo 2015, 01:26 am
Citar
sumandole 3 numeros
supongo que querrás decir 3 posiciones

sin redeos sino directamente a lo que necesitas...

Código:
para i de 0 al largo
  nombre[i]+=3


Título: Re: Ayuda con cifrar un texto mediante ascci u.u
Publicado por: AliceLopez14 en 23 Marzo 2015, 03:29 am
Si eso,3 valores jeje y si lo habia pensado asi
el problema es que como estoy usando los datos asi "(a+c)->nombre" no puedo usar la forma que tu me dices,me da error :s,me confunde un poco,muchas gracias por tu ayuda


Título: Re: Ayuda con cifrar un texto mediante ascci u.u
Publicado por: engel lex en 23 Marzo 2015, 03:40 am
coloca la sección de codigo que no te funciona a ver si es que tal vez la implementas mal...