Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Mendes

[Resolvido] Analizador de Sintax

Recommended Posts

Bom dia Pessoal.

 

Estou com um probleminha chato aqui, e não to conseguindo sair dele. é o Seguinte. Estou pretendendo fazer um analizador de sintax simples. então eu tenho

uma string grande e vou dividindo ela aos poucos para intrepretar os comandos...estou com problema nas comparações...hora funciona hora não funciona, eu não estou entendendo bem.

 

seguinte, leio minha string grande

 

char str_sintax[100];
char str_comando[6];

fgets(str_sintax, 100, stdin);
f_analizador(str_sintax, str_comando);

vamos supor que eu digite help! -s

 

//procurando primeira parte do comando
void f_analizador(char str_sintax[100], char str_comando[6])
{
 int int_contador;

 for(int_contador = 0; int_contador<=5; int_contador++)
 {
  str_comando[int_contador] = str_sintax[int_contador]  
 }
 str_comando[5] = "\0";
}
a partir daqui eu não entendo, pois quando dou printf em str_comando tem uma carinha dando risada aparecendo no fim da string!!! E isso causa erro na hora da comparação

 

if (strcmp("help!", str_comando)==0)
{
  f_help();
}

logo a função retorna falso e eu não consigo saber qual é o comando.

 

No Aguardo

 

PaulO Mendes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo Mendes aki naum retorna nenhum valor ascci ou sujeira a unica coisa q mudei foi de "/ 0" coloquei '/ 0' pois como é caracter naum é aspas duplas!

OU SEJA SEU ERRO FOI AS ASPAS DUPLAS! isso acontece as vzs eu tbm sempre esqueço isso, soh q aki no TC ele da um Warning :lol:

o codigo fico assim:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void f_analizador(char str_sintax[], char str_comando[])
{
int int_contador;

for(int_contador = 0; int_contador<=5; int_contador++)
{
  str_comando[int_contador] = str_sintax[int_contador];  
}
str_comando[5] = '\0';
if (strcmp("help!", str_comando)==0)
{
  printf("%s\n\n",str_comando);
}
else printf("palavra errada\n\n");
}

int main()
{	
char str_sintax[100];
char str_comando[6];
printf("Digite sua palavra: ");
fgets(str_sintax, 100, stdin);
f_analizador(str_sintax, str_comando);

	 system("pause>>NULL");
   
	 
}
tente ae e me de um retorno!

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que erro bobo!!!! huahuah...

 

Valeu quitZAUMM...funcionou perfeitamente...vai fica muito massa meu projetinho hehe...

 

Flws.

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.