Error con "Void expression".

Iniciado por Ataulfo7, 9 Abril 2015, 13:21 PM

0 Miembros y 1 Visitante están viendo este tema.

Ataulfo7

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....

#include <stdio.h>

void FindReplace(char s[], char e1, char e2){
int i;
for(i=0;s[i]!=0;i++);
if (s[i]==e1) s[i]=e2;
return s;
}

char cadena[40];
char e1;
char e2;
void main(){
printf("Escriba dos letras, la segunda sustituira a la primera en una frase ");
scanf("%c %c",&e1,&e2);
printf("Escriba la frase para intercambiar las letras ");
scanf("%s",cadena);
printf("%s",FindReplace(cadena,e1,e2));
}

en este printf final es donde me da el error "Invalid use of void expression..."
Alguna ayuda? Gracias! :-) ;-)

eferion

void FindReplace(char s[], char e1, char e2){
 return s;
}


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,

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.

Ataulfo7

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! ^^  ;-) ;-)