Bueno este programita hace lo siguiente: cambia cada letra de la palabra usando abecedario inverso (corrimiento a la derecha)
Cambia 'a' por 'z' - 'y' por 'b' y sucesivamente; el problema es que cuando lo compilo
me lanza este warning:
[Warning] NULL used in arithmetic
Alguien sabe por pasa esto y como puedo solucionarlo :huh:
les dejo el code:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char *palabra=(char*)malloc(sizeof(char)*64);
char *nuevo=(char*)malloc(sizeof(char)*64);
char *start= nuevo;
printf("Original: ");
gets(palabra);
while(*palabra!= '\0'){
if (*palabra==32 )
*nuevo++= *palabra++;
else
*nuevo++= 219- *palabra++;
}
*nuevo++='\0';
printf(" Cifrado: %s \n", start);
return 0;
}
Codigo mejorado ;D
El mensaje de advertencia se genera por la linea:
}while (caract!=NULL);
Ya que (usualmente) NULL es de tipo "void *" y (en tu caso) estarias comparando un entero con un puntero.
Para que no se genere el mensaje cambia esa linea a:
}while (caract != '\0');
Un saludo
Usando arrays estáticos te queda más "light":
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i;
char frase[64],nuevo[64];
printf("Original: ");
gets(frase);
for ( i=0;frase [i]!='\0';i++)
nuevo[i]=219-frase [i];
nuevo[i]='\0';
printf(" Cifrado: %s", nuevo);
return 0;
}
Gracias rir3760 por la ayuda ya corregi el code ;)
Este code lo hize solo pa practicar con malloc ; definitivamente
quedaria mas bonito usando arrays estaticos
un saludo!
Cita de: Neo_System en 14 Octubre 2012, 14:39 PM
Este code lo hize solo pa practicar con malloc ; definitivamente
quedaria mas bonito usando arrays estaticos
Ya me parecía a mí. Pero creo que puedes prescindir de "char caract;":#include <stdlib.h>
#include <stdio.h>
int main()
{
char *frase=(char*)malloc(sizeof(char)*64);
char *nuevo=(char*)malloc(sizeof(char)*64);
char *start= nuevo;
printf("Original: ");
gets(frase);
printf(" Cifrado: ");
for (;*frase!= '\0';)
{
if (*frase==32 )
*nuevo++= *frase++;
else
*nuevo++= 219- *frase++;
}
*nuevo++='\0';
printf(" Cifrado: %s \n", start);
return 0;
}
Un saludo!
Si efectivamente esta demas, vi que en el code de arriba agregaste un:
printf(" Cifrado: ");
Creo que esta demas, me llamo la atencion la forma que implementaste
el for nunca la habia visto, es como la implementacion del while en el for
Un saludo ;)