Test Foro de elhacker.net SMF 2.1

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

#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! :-) ;-)
Título: Re: Error con "Void expression".
Publicado por: eferion en 9 Abril 2015, 13:39 PM
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:


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