A mim sempre me disseram para nunca usar goto... O professor que o disse, apesar de saber de programação foi estúpido por não exemplificar porque não se devem usar gotos. Este é um exemplo perfeito.
Tens uma função chamada loop que corre indefinidamente, e em vez disso, preferes tornar o código mais complexo de ler com gotos?
Isto não é a mesma coisa?
char myStr[] = {"OK"};
char myCpy[2];
int i;
void setup(){
}
void loop(){
char temp;
Serial.begin(9600);
if (Serial.available() > 0) {
for (int i=0; i <= 2; i++)
{
temp = Serial.read();
myCpy[i]=temp;}
delay(100);
if (strcmp (myStr, myCpy) == 0){
Serial.println("Senha Correta");
}
else {
Serial.println("Senha Errada");
}
}
Serial.end();
delay(100);
}
????
Aqui vejo um erro... tu defines strings sem espaço para um caracter terminador \0... mas depois usas a strcmp que procura um caracter terminador para terminar a função. O que acontece com este código é que provavelmente crasha. Correcto?
Ou defines as strings com espaço para o terminador.... ou passas a usar a strncmp desta forma:
if (strncmp (myStr, myCpy,2) == 0){
O problema disto é que sempre que mudares a password, tens de te lembrar de mudar este número. Se definires os vectores com um espaço a mais, isso não será necessário.