elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Warning al compilar un programa [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Warning al compilar un programa [Solucionado]  (Leído 3,189 veces)
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Warning al compilar un programa [Solucionado]
« en: 14 Octubre 2012, 01:40 am »

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:

Código:
[Warning] NULL used in arithmetic 

Alguien sabe por pasa esto y como puedo solucionarlo :huh:
les dejo el code:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6. char *palabra=(char*)malloc(sizeof(char)*64);
  7. char *nuevo=(char*)malloc(sizeof(char)*64);
  8. char *start= nuevo;
  9. printf("Original: ");
  10. gets(palabra);
  11. while(*palabra!= '\0'){
  12.            if (*palabra==32 )
  13.                *nuevo++= *palabra++;
  14.            else
  15.                *nuevo++= 219- *palabra++;
  16.                }
  17.    *nuevo++='\0';
  18.    printf(" Cifrado: %s \n", start);
  19. return 0;
  20. }

Codigo mejorado  ;D


« Última modificación: 16 Octubre 2012, 01:04 am por neo-System » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Warning al compilar un encriptador
« Respuesta #1 en: 14 Octubre 2012, 03:07 am »

El mensaje de advertencia se genera por la linea:
Código
  1. }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:
Código
  1. }while (caract != '\0');

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Warning al compilar un encriptador
« Respuesta #2 en: 14 Octubre 2012, 14:12 pm »

Usando arrays estáticos te queda más "light":
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int i;
  6. char frase[64],nuevo[64];
  7.        printf("Original: ");
  8. gets(frase);
  9.        for ( i=0;frase [i]!='\0';i++)
  10.             nuevo[i]=219-frase [i];
  11.        nuevo[i]='\0';
  12.        printf(" Cifrado: %s", nuevo);
  13. return 0;
  14. }
En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Warning al compilar un encriptador
« Respuesta #3 en: 14 Octubre 2012, 14:39 pm »

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!
« Última modificación: 14 Octubre 2012, 18:47 pm por Neo_System » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Warning al compilar un encriptador
« Respuesta #4 en: 14 Octubre 2012, 18:23 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;":
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6. char *frase=(char*)malloc(sizeof(char)*64);
  7. char *nuevo=(char*)malloc(sizeof(char)*64);
  8. char *start= nuevo;
  9. printf("Original: ");
  10. gets(frase);
  11.    printf(" Cifrado: ");
  12. for (;*frase!= '\0';)
  13.        {
  14.            if (*frase==32 )
  15.                *nuevo++= *frase++;
  16.            else
  17.                *nuevo++= 219- *frase++;
  18.        }
  19.    *nuevo++='\0';
  20.    printf(" Cifrado: %s \n", start);
  21. return 0;
  22. }
Un saludo!
En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Warning al compilar un encriptador
« Respuesta #5 en: 14 Octubre 2012, 18:58 pm »

Si efectivamente esta demas, vi que en el code de arriba  agregaste un:
Código:
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  ;)
« Última modificación: 15 Octubre 2012, 18:56 pm por Neo_System » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error al compilar helomoto [solucionado]
Hacking Mobile
oPen syLar 1 3,690 Último mensaje 3 Mayo 2008, 17:14 pm
por shargon
Compilar pyrit con soporte OpenCL [Solucionado]
Mac OS X
kattandpeist 0 2,878 Último mensaje 27 Mayo 2010, 20:12 pm
por kattandpeist
C++: error 11 al compilar (Solucionado)
Programación C/C++
fuenteRea 2 3,100 Último mensaje 9 Octubre 2010, 20:51 pm
por fuenteRea
compilar directo desde consola(solucionado)
Programación C/C++
flony 0 2,309 Último mensaje 28 Noviembre 2010, 23:34 pm
por flony
[QT][C++]Problemas al compilar los drives mysql (SOLUCIONADO)
Programación C/C++
anonimo12121 1 2,471 Último mensaje 7 Noviembre 2012, 21:14 pm
por anonimo12121
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines