Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/06/2012, 17:35
Javieer-G
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con la longitud de la cadena

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
  1. (int *)claveaux = tonumber(claveaux); //Convierte los caracteres de clave en valores numéricos
  2.  
  3.   (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
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. int *tonumber(char *cadena)
  6. {
  7.   char letras[] = "ABCDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  8.   int numeros[100], i, j;
  9.   int *cadenafinal;
  10.  
  11.   cadenafinal = (int *)malloc(sizeof(int));
  12.   if(cadenafinal == NULL) puts("Falta memoria!");
  13.  
  14.   for(i=0; i<25;i++) numeros[i] = i;
  15.   for(i=25; i<50;i++) numeros[i] = (i-25);
  16.  
  17.   for(i=0; i<strlen(cadena); i++){
  18.      for(j=0; j<strlen(letras); j++){
  19.          if(cadena[i] == letras[j])
  20.             *(cadenafinal + i) = numeros[j];}}
  21.  
  22.   return *cadenafinal;
  23.  
  24. }
  25.  
  26. main()
  27. {
  28.   char *tmp;
  29.   int u, i;
  30.   int cifrado[100], texto_num[100], clave_num[100];
  31.   int *p, *q;
  32.   char claveaux[100] = "\0";
  33.   char texto[100] = "hola foro solo codigo";
  34.   char clave[100] = "clave";
  35.  
  36.   while((tmp=strchr(texto,' '))!=NULL) //Quita los espacios en blanco al texto
  37.     strcpy(tmp,tmp+1);
  38.  
  39.   printf("texto sin espacios: %s\n", texto);
  40.  
  41.   while(strlen(clave)<strlen(texto))   //copia la clave a continuación de la misma mientras
  42.     strcat(clave, clave);              //que su longitud sea menor que la del texto.
  43.  
  44.   while((tmp=strchr(clave,' '))!=NULL) //Quita los espacios en blanco a la clave
  45.     strcpy(tmp,tmp+1);
  46.  
  47.   printf("clave sin espacios: %s\n", clave);
  48.  
  49.   strncpy(claveaux, clave, strlen(texto));  //Elimina caracteres a la clave hasta que esta sea del
  50.                                             //tamaño del texto.
  51.  
  52.   printf("claveaux maquetada: %s\n", claveaux);
  53.  
  54.   (int *)claveaux = tonumber(claveaux); //Convierte los caracteres de clave en valores numéricos
  55.  
  56.   (int *)texto = tonumber(texto);        //Convierte los caracteres de texto en valores numéricos
  57.    
  58.  
  59.   while(texto[i] != '\0'){                //Suma al valor numérico del caracter correspondiente del
  60.     cifrado[i] = texto[i] + claveaux[i];  //texto al valor numérico del caracter de la clave.
  61.     i++;}
  62.  
  63.   while(cifrado[i] != '\0'){printf("-%d-", cifrado[i]); i++;}
  64.  
  65. }

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.