Te pego la parte del programa que sigue sin dejarme trabajar.
Ahora mismo, al compilar, la funcion tonumber me da un warning con respecto a lo que retorno... pero lo he remirado y no parece tener ningún fallo, y luego las sentencias que sí me dan más dolor son estas:
Código C:
Ver original(int *)claveaux = tonumber(claveaux); //Convierte los caracteres de clave en valores numéricos
(int *)texto = tonumber(texto); //Convierte los caracteres de texto en valores numéricos
No están bien, pero no sé cómo se ha de hacer pues :(
Aquú el código:
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int *tonumber(char *cadena)
{
char letras[] = "ABCDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int numeros[100], i, j;
int *cadenafinal;
cadenafinal
= (int *)malloc(sizeof(int)); if(cadenafinal
== NULL
) puts("Falta memoria!");
for(i=0; i<25;i++) numeros[i] = i;
for(i=25; i<50;i++) numeros[i] = (i-25);
for(i
=0; i
<strlen(cadena
); i
++){ for(j
=0; j
<strlen(letras
); j
++){ if(cadena[i] == letras[j])
*(cadenafinal + i) = numeros[j];}}
return *cadenafinal;
}
main()
{
char *tmp;
int u, i;
int cifrado[100], texto_num[100], clave_num[100];
int *p, *q;
char claveaux[100] = "\0";
char texto[100] = "hola foro solo codigo";
char clave[100] = "clave";
while((tmp
=strchr(texto
,' '))!=NULL
) //Quita los espacios en blanco al texto
printf("texto sin espacios: %s\n", texto
);
while(strlen(clave
)<strlen(texto
)) //copia la clave a continuación de la misma mientras strcat(clave
, clave
); //que su longitud sea menor que la del texto.
while((tmp
=strchr(clave
,' '))!=NULL
) //Quita los espacios en blanco a la clave
printf("clave sin espacios: %s\n", clave
);
strncpy(claveaux
, clave
, strlen(texto
)); //Elimina caracteres a la clave hasta que esta sea del //tamaño del texto.
printf("claveaux maquetada: %s\n", claveaux
);
(int *)claveaux = tonumber(claveaux); //Convierte los caracteres de clave en valores numéricos
(int *)texto = tonumber(texto); //Convierte los caracteres de texto en valores numéricos
while(texto[i] != '\0'){ //Suma al valor numérico del caracter correspondiente del
cifrado[i] = texto[i] + claveaux[i]; //texto al valor numérico del caracter de la clave.
i++;}
while(cifrado
[i
] != '\0'){printf("-%d-", cifrado
[i
]); i
++;}
}
A ver si ves tu la luz y me puedes iluminar un poquitín el camino...
PD: He ido comentando cada paso para que se entienda lo que quiero hacer.