Fórum cannot convert from ´void *´ to ´char *´ #61744
01/06/2006
0
#include <stdio.h>
include <stdlib.h>
include <string.h>
//
// retorna != 0 se o valor passado
// e´ uma vogal
//
int vogal(char c)
{
char *v="AaEeIiOoUu";
while(*v) if(*v++==c) return true;
return false;
}
//
// detecta as sequencias de nao-vogais
// e defaz as trocas
//
void troca(char *msg, int *i)
{
int j, t;
char aux;
j=*i;
t=0;
while(msg[j]&&!vogal(msg[j++])) t++;
switch(t)
{
case 2: // 2 nao-vogais contiguas
aux=msg[*i];
msg[*i]=msg[*i+1];
msg[*i+1]=aux;
(*i)+=2;
break;
case 3: // 3 nao-vogais contiguas
aux=msg[*i];
msg[*i]=msg[*i+2];
msg[*i+2]=aux;
(*i)+=3;
break;
case 4: // 4 nao-vogais contiguas
aux=msg[*i];
msg[*i]=msg[*i+3];
msg[*i+3]=aux;
aux=msg[*i+1];
msg[*i+1]=msg[*i+2];
msg[*i+2]=aux;
(*i)+=4;
break;
}
}
void main()
{
int k, j, t;
char aux, *msg;
msg=malloc(80);
printf("Digite a mensagem codificada:\n>> ");
gets(msg);
t=strlen(msg);
k=0;
j=t-1;
// reverte a string...
while(j>k)
{
aux=msg[k];
msg[k]=msg[j];
msg[j]=aux;
k++;
j--;
}
// desfaz as trocas nao-vogais...
for(k=0; k<t; k++) troca(msg, &k);
printf("\nMensagem decodificada:\n>> ¬s", msg);
// pause
getch();
}
dah sempre esse erro maldito
error C2440: ´=´ : cannot convert from ´void *´ to ´char *´
Conversion from ´void*´ to pointer to non-´void´ requires an explicit cast
Alguem sabe o q devo modificar no codigo jah foi um sacrificio eu fazer ainda dar esses erros num sei mais em q mecher.
[color=darkred:cd50f70243][/color:cd50f70243]
Feswood
Curtir tópico
+ 0Posts
01/06/2006
Feswood
Gostei + 0
01/06/2006
Massuda
Para fazer isso explicitamente, escreva...
msg = (char*) malloc(80);
Gostei + 0
01/06/2006
Feswood
Obrigado pela ajuda tb cara eu num penssei nisso :D , mais esse código está feito dinamicamente ou estaticamente?? essa eh outra duvida q tenho pq meu irmão fla q tah dinamicamente, meus colegas da facu flam q estah estaticamente afinal tá o q? dinamica ou estatica?
Gostei + 0
01/06/2006
Massuda
No caso, msg está sendo alocada dinamicamente usando malloc(). Uma alocação estática seria...
char msg[80];
Aliás, percebi outro problema... sempre que você aloca memória com malloc(), não se esqueça de liberar a memória alocada usando free(). No caso, o problema não é grave porque você aloca uma única vez memória e depois o programa termina (o Windows gentilmente irá liberar a memória que você alocou quando o programa termina), mas imagine essa alocação dentro de uma função executada milhares de vezes.
Gostei + 0
01/06/2006
Feswood
Gostei + 0
01/06/2006
Feswood
Aguardo respostas pois cheguei e estamos tentando porém sempre dá varios erros por favor ajuda
Gostei + 0
01/06/2006
Massuda
Gostei + 0
01/06/2006
Feswood
Gostei + 0
02/06/2006
Massuda
struct: [url=http://ead1.eee.ufmg.br/cursos/C/aulas/cb10.html]clique aqui[/url]
sizeof: [url=http://ead1.eee.ufmg.br/cursos/C/aulas/cb50.html]clique aqui[/url]
Esses links são trechos de uma excelente apostila de C do curso de Engenharia Elétrica da UFMG [url=http://ead1.eee.ufmg.br/cursos/C/c.html]cliqeu aqui[/url].
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)