Por favor, estou tendo dificuldades em conseguir comparar o conteúdo de um vetor com uma string (sei que não há string em C, e sim um vetor de char, mas usei este termo apenas para me explicar melhor).
Ocorre o seguinte:
O programa contém as seguintes variáveis globais (vetores de char):
Em um segundo momento, o conteúdo da variável Buffer será atribuído a partir de uma informação que será recebido pela porta serial, mas por hora, estou simulando com um conteúdo fixo.
Criei uma rotina chamada Check_ID() que pega os 5 primeiros dígitos do Buffer e compara com a variável ID, se for igual, então o sistema deve prosseguir. Esta rotina será utilizada para identificar se a informação que chegar pela Serial (Buffer) está endereçada para ele.
Criei uma segunda rotina chamada Check_CMD() que pega a partir da 6ª posição do Buffer e vai até o final deste e salva este conteúdo no vetor CMD.
Então no Programa Principal, exatamente na linha 66, eu faço um IF para comparar o conteúdo de CMD com uma informação que deve estar entre aspas duplas, por exemplo: if (CMD == "RL1#ON*").
Neste ponto é que estou tendo dificuldades...
Se eu fizer o seguinte teste:
printf("CMD..: %s, CMD);
O programa imprime exatamente o conteúdo que está sendo informado entre as aspas no IF, porém, o if me retorna FALSE.
A pergunta é:
Como devo fazer esta validação? (Visto que CMD é um vetor de char).
Abaixo está TODO o código para que possam entender melhor o que foi dito acima.
Desde já agradeço a todos que puderem me ajudar.
Obs.: Estou testando o código no TurboC.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
//Variáveis Globais
char Buffer[15] = ">ID01RL1#ON*";
char ID[5]=">ID01";
char CMD[10];
/********************
** Check_ID()
** Pega os 5 primeiros dígitos da String para verificar se ‚ o ID correto
** Recebe Buffer como parâmetro
** Retorna 0 para ID Incorreto; 1 para ID Correto
**/
int Check_ID(char bfr[15])
{
char ID_tmp[5];
int status=0;
//Coleta ID (5 primeiros caracteres do Vetor bfr e salva em ID_tmp)
strncpy(ID_tmp, bfr, 5);
ID_tmp[5] = '\0'; //Adiciona caracter delimitador
//Valida vetor (cada posicao)
for(int i=0; i<5; i++)
{
if(ID_tmp[i] == ID[i]) status = 1;
else status = 0;
}
//Retorna 1 para ID Correto, 0 para ID Incorreto
return status;
}
/********************
** Check_CMD()
** Pega os ultimos dígitos da String a partir do 6º para verificar o comando
**/
void Check_CMD(char bfr[15])
{
//Coleta Comando (Os Últimos caracteres da String)
for(int i=5; i <15; i++)
{
CMD[i-5] = bfr[i];
}
}
//Programa Principal
void main(){
clrscr();
//Verifica ID
if (Check_ID(Buffer) == 1)
{
printf("ID Correto");
//Coleta Comando da String
Check_CMD(Buffer);
//Se comando "OK", então Executa-o
if (CMD == "RL1#ON*")
{
printf("\nCMD.: %s", CMD);
printf("\n\nComando OK!!!");
} //Fim do IF (Teste de Comando)
}//Fim do IF (Check_ID)
puts("\n\n");
system("PAUSE");
}//Fim do programa Principal: void main()
Pergunta
linguagem_C
Prezados,
Por favor, estou tendo dificuldades em conseguir comparar o conteúdo de um vetor com uma string (sei que não há string em C, e sim um vetor de char, mas usei este termo apenas para me explicar melhor).
Ocorre o seguinte:
O programa contém as seguintes variáveis globais (vetores de char):
Em um segundo momento, o conteúdo da variável Buffer será atribuído a partir de uma informação que será recebido pela porta serial, mas por hora, estou simulando com um conteúdo fixo.
Criei uma rotina chamada Check_ID() que pega os 5 primeiros dígitos do Buffer e compara com a variável ID, se for igual, então o sistema deve prosseguir. Esta rotina será utilizada para identificar se a informação que chegar pela Serial (Buffer) está endereçada para ele.
Criei uma segunda rotina chamada Check_CMD() que pega a partir da 6ª posição do Buffer e vai até o final deste e salva este conteúdo no vetor CMD.
Então no Programa Principal, exatamente na linha 66, eu faço um IF para comparar o conteúdo de CMD com uma informação que deve estar entre aspas duplas, por exemplo: if (CMD == "RL1#ON*").
Neste ponto é que estou tendo dificuldades...
Se eu fizer o seguinte teste:
O programa imprime exatamente o conteúdo que está sendo informado entre as aspas no IF, porém, o if me retorna FALSE.
A pergunta é:
Como devo fazer esta validação? (Visto que CMD é um vetor de char).
Abaixo está TODO o código para que possam entender melhor o que foi dito acima.
Desde já agradeço a todos que puderem me ajudar.
Obs.: Estou testando o código no TurboC.
Muito obrigado e forte abraço!!!
HFP
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.