Hola a todos.
Estoy practicando con este magnífico tutorial, una campo que quiero tener muy en claro..gracias migsantiago.
Como ejemplo estoy usando el strcmp de esta forma:
for(;;){
unsigned char activar[]="*1234";
unsigned char codigos[6];
unsigned char i,c;
while(estado==0x04){ //Hasta que no sea igual no seguimos
for(i=0;i<5;i++){
while(c==0); //Hasta que no se oprima alguna tecla ..está por interrupción
codigos[i]=c;
c=0; //reiniciamos c
}
if(strcmp(codigos,activar)==0){ //Comparamos
lcd_putc("\fEs Igual");
delay_ms(1800);
estado=0x05; //Es igual , salimos
}else{
lcd_putc("\fNo es Igual");
estado=0x04;}Lo curioso es que anoche me funcionó bien, hoy le hice unos cambios al código en las lines sobre que hacer si es diferente, y resulta que compilo, 0.0 errores, 0 warnigs pero no me funciona, siempre dice que es diferente. Me puse a grabar la varible activar en la eeprom, usando la variable i dentro del for, y al leerla me muestra *1234; lo mismo hice con la variable codigos dandome bien...por lo que creo que debe ser un bug del CCS o cometo un error al comparar...alguna sugerencia, por favor. Estoy usando CCS 4.120 y el 18F2550
Saludos
PD...Me respondo: Mi error está en que la variable codigos no le agrego el caracter nulo al final, para que se sepa que se ha terminado la cadena, por lo tanto algún campo de la memoria tenía el "0" anoche y hoy pues ya no estaba

por eso me confundió....busqué como agregarle el cero y ya en este mismo hilo, vamos cosas de despistes que me quitaron 2 horas

..bueno aca la correción:
unsigned char codigos[6]="\0";
Gracias por enseñarme, señores.
////////////////////////////////////////////////////////////
Edición 2: No entiendo que pasa, pero ya no me funciona, sigo con el mismo problema, no da como resultado la igualdad, siempre es diferente, debo tener el problema en la formación de la cadena, realmente como se hace? no logro entender, si le sumo un espacio más a la cadena para que el compilador agregue el caracter nulo, por que no me funciona?
Ayuda por favor...
Gracias de antemano
////////////////////////////////////////////////////////////
Edición 3:Jajaja, de nuevo, solo funciona si a la variable codigos le agrego el cero(en caracter nulo) luego de la rutina for.. asi:
for(i=0;i<5;i++){
while(c==0); //Hasta que no se oprima alguna tecla ..está por interrupción
codigos[i]=c;
c=0; //reiniciamos c
}
codigos[5]=0;Existe una forma más elegante de no tener que hacer esto cada vez? o la puedo declarar al inicio del programa sin problemas? Gracias.
Saludos