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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error con "Void expression".
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error con "Void expression".  (Leído 2,318 veces)
Ataulfo7

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Error con "Void expression".
« 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! :-) ;-)


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Error con "Void expression".
« Respuesta #1 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.


En línea

Ataulfo7

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Error con "Void expression".
« Respuesta #2 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! ^^  ;-) ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines