Ir para conteúdo
Fórum Script Brasil

linguagem_C

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que linguagem_C postou

  1. Prezados, Com um pouco de paciência eu consegui resolver esta dúvida. De qualquer forma, agradeço muito aos que analisaram e de uma forma ou de outra tentaram achar uma solução. Resolvi da seguinte maneira: Na linha 66, alterei a expressão do "if", utilizando o "strcmp" que é uma função específica para comparar duas strings (ou vetores de char). Segue a expressão corrigida: if (strcmp(CMD, "RL1#ON*") == 0) Problema resolvido! Obrigado... Abraços, HFP
  2. 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): char Buffer[15] = ">ID01RL1#ON*"; char ID[5]=">ID01"; char CMD[10]; 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() Muito obrigado e forte abraço!!! HFP
×
×
  • Criar Novo...