Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio Neto

[Resolvido] Concatenar sem usar sprintf

Recommended Posts

Tenho o seguinte código:

	char *sResultado;
	char *Aux;
	BSTR bstrResultado;
	for(int i = 0; i < Canal.size(); i++){
		if(Canal[i] == idCanal && Placa[i] == idPlaca){
            Aux = new char [Numero[i].size() + 1];
			strcpy(Aux, Numero[i].c_str());
			if(Estado[i] == 0){
				sResultado = "Livre";
			}else if(Estado[i] == 1){
				sResultado = "(destino) - chamando";
				
			}else if(Estado[i] == 2) {
				sResultado = "(destino) - atendeu - aguardando reproducao";
				
			}else{
				sResultado = "(destino) - atendeu - reproduzindo audio";
			}
			//return sResultado;
			bstrResultado = SysAllocStringByteLen (sResultado , lstrlen(sResultado));
			return bstrResultado;
		}
    }

No retorno, preciso que no lugar da palavra destino apareça o valor da variável Aux.

Sei que eu poderia fazer: sprint(Aux, "(%s) - atendeu - reproduzindo audio", Aux).

 

Mas tenho um outro problema. Essa função está sendo chamada em um aplicativo feito em VB. Quando uso sprintf, os caracteres se alteram todos.

Por exemplo, se deveria retornar "Livre", está retornando "ÉÃ%...".

 

Então tem duas coisas que poderiam me ajudar. Saber como faço para por o valor da variável ali, ou uma forma de não retornar esses caracteres estranhos.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a solução, mas se alguém puder me explicar o motivo de ocorrer tal fato ficaria muito agredecido.

 

Para resolver, simplesmente inverti a ordem de declaração das variáveis.

Estava assim:

char *sResultado;
char *Aux;
BSTR bstrResultado;

E deixei assim:

BSTR bstrResultado;
char *sResultado;
char *Aux;

O que tem haver eu declarar uma depois a outra?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.