void tonumber(char cadena[], int cadenafinal[])
{
char letras[] = "ABCDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int numeros[100];//, cadenafinal[100];
unsigned int i, j;
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;
}
A raiz de lo que me comentas, ¿poner char *cadena, no es lo mismo que char cadena[]?
char *clave1 = "abcd";
char clave2[] = "fgh";
// El siguiente codigo no marcara error, ya que clave1 es un apuntador a char
// asi que puede apuntar a cualquier variable de tipo char
clave1 = clave2;
// El siguiente codigo marcara error de compilacion, pues clave2 no es un
// apuntador a char, por lo tanto solo puede contener la direccion de la
// cadena originalmente asignada "fgh"
clave2 = clave1;
Es decir, si yo declaro:Código: C
char *cadena = "ABCD";
¿Qué significado tiene?
Por otra parte, te pongo dos versiones. ¿Son ambas correctas?
int *tonumber(char *cadena) /*Versión con punteros*/
{
char letras[] = "ABCDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int numeros[100], i, j;
static int *cadenafinal;
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];}}
// Regresa la direccion, no el valor
return cadenafinal;
}
Saludos :)