Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ataulfo7 en 9 Abril 2015, 13:21 pm



Título: Error con "Void expression".
Publicado por: Ataulfo7 en 9 Abril 2015, 13:21 pm
Hola buenas, en este programa al intentar hacer un printf de una expresion void, me sale Void expression, y no se como arreglarlo, lo e intentado todo, como desde hacer el printf desde la variable hasta un monton de cosas sin sentido....

Código
  1. #include <stdio.h>
  2.  
  3. void FindReplace(char s[], char e1, char e2){
  4. int i;
  5. for(i=0;s[i]!=0;i++);
  6. if (s[i]==e1) s[i]=e2;
  7. return s;
  8. }
  9.  
  10. char cadena[40];
  11. char e1;
  12. char e2;
  13. void main(){
  14. printf("Escriba dos letras, la segunda sustituira a la primera en una frase ");
  15. scanf("%c %c",&e1,&e2);
  16. printf("Escriba la frase para intercambiar las letras ");
  17. scanf("%s",cadena);
  18. printf("%s",FindReplace(cadena,e1,e2));
  19. }
en este printf final es donde me da el error "Invalid use of void expression..."
Alguna ayuda? Gracias! :-) ;-)


Título: Re: Error con "Void expression".
Publicado por: eferion en 9 Abril 2015, 13:39 pm
Código
  1. void FindReplace(char s[], char e1, char e2){
  2.  return s;
  3. }

Si la función es "void" no puede tener "return s". Si necesitas devolver "s" entonces la función tienes que cambiar "void" por el tipo de retorno, en este caso char*.

Por otro lado,

Código
  1. for(i=0;s[i]!=0;i++);

Fíjate que ese "for" termina con ";"... ese bucle no va a hacer absolutamente nada y, en consecuencia, el if que le sigue va a sufrir las siguientes consecuencias:

  • Solo se va a ejecutar una vez
  • s[ i ] va a apuntar SIEMPRE al final de la cadena (por el efecto del bucle for)

Y, bueno, intenta evitar el uso de variables globales.

Un saludo.


Título: Re: Error con "Void expression".
Publicado por: Ataulfo7 en 9 Abril 2015, 13:56 pm
Me siento inutil cuando me pasan cosas de estas... Quite el ; del for y el return lo sustitui por un printf de la cadena, y va perfecto... Muchisimas gracias! ^^  ;-) ;-)