Ayuda con cifrar un texto mediante ascci u.u

Iniciado por AliceLopez14, 23 Marzo 2015, 01:17 AM

0 Miembros y 1 Visitante están viendo este tema.

AliceLopez14

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,

#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 :-[

engel lex

Citarsumandole 3 numeros
supongo que querrás decir 3 posiciones

sin redeos sino directamente a lo que necesitas...

para i de 0 al largo
  nombre[i]+=3

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AliceLopez14

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

engel lex

coloca la sección de codigo que no te funciona a ver si es que tal vez la implementas mal...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.