Autor Tema: les a funcionado strcpy en proteus ??????  (Leído 1774 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
les a funcionado strcpy en proteus ??????
« en: 27 de Noviembre de 2009, 14:57:40 »
hola... resulta que estava provando unas funciones de manejos de cadena, el cual en este caso es strcpy donde esta copia el contenido de cadena2 en cadena1. cadena2 puede ser una variable o una cadena directa (por ejemplo "hola").  el cual el unico cuidado de que la cadena destino (cadena1) tenga espacio suficiente para albergar a la cadena origen (cadena2). donde esto se define:

char strcpy(cadena1, cadena2);

bueno el codigo que le aplico a esto es bien sencillo, trabajo con un teclado 4x4 y va almacenando los valores pulsados en una cadena definida como clave, el cual es del tipo char clave[40]; y despues de apretar la D del teclado la transfiere a una segunda cadena, y borra la cadena clave, dejando el contenido ahora solo en mi segunda cadena, donde esta definida como string[40];
bueno mi duda es, si alguien la a otrabajado esta funcion en proteus, porque ami por lo menos no me funciona, mejor dicho proteus se queda sin hacer nada mas.... cuando llega a esta linea, prove sacando esta linea y cambiando los los printf de en vez de poner string poniendo clave, y me funciona bien, esto era para descartar que el programa estuviese con algun error.
de todas formas le pongo el codigo para que vean de que ablo.

Código: [Seleccionar]
#include <16F873a.h>
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT     //ordenes para el programador
#use delay (clock=20000000) //Fosc=20Mhz
#include<kbd2+espacio.c>               //libreria manejo keypad
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd2.c> //libreria manejo lcd
#include <stdlib.h>         //Libreria de manego de string

char clave[40],string[40],c,borrar[40];
signed char i;
int longitud;
///PROGRAMA
void main(void)
{
  lcd_init();         //inicializa, o activa lcd
   for(i=0;i<40;i++){
      do{               //espera hasta...
         c=kbd_getc();  
         }while(c==0);   //...pulsar una tecla
         if(c=='D'){
         strcpy( string, clave );//Copia el contenido de cadena2 en cadena1
         strcpy( clave,borrar); // borra cadena1
         break;}
      clave[i]=c;               //almacena clave(maximo 16 caracteres)
      borrar[i]; //almacena cuantas posiciones se ocuparon
if(i<19){
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",clave);
}else{
lcd_gotoxy(-19,2);
printf(lcd_putc,"%s",clave);
}
   }
  
lcd_gotoxy(1,1);
printf(lcd_putc,"separando la cadena ");
lcd_gotoxy(1,2);
printf(lcd_putc,"2 para verla entera ");
delay_ms(1500);

longitud = strlen(string); //devuelve el número de caracteres que tiene la cadena (sin contar el '\0').

if(longitud>18){
lcd_gotoxy(1,1);
printf(lcd_putc,"%s"string);
lcd_gotoxy(-19,2);
printf(lcd_putc,"%s",string);
}else{
lcd_gotoxy(1,1);
printf(lcd_putc,"%s",string);
}
}


« Última modificación: 27 de Noviembre de 2009, 15:31:42 por japifer_22 »

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: les a funcionado strcpy en proteus ??????
« Respuesta #1 en: 27 de Noviembre de 2009, 15:40:58 »
hola bueno encontre el problema, pero en realidad no se por que pasa esto tan raro.
era que la linea  strcpy( clave, borrar); la tenia sin espacio entre borrar y el parentesis, solo cambie el espacio
                        strcpy( clave, borrar ); , como digo cambie eso y me funciono, pero ahora me queda la duda de por que se produce eso ???????

a y lo otro aprovechando el espacio, si quiero guardar por ejemplo un string en la eeprom del pic, esto en algun momento la puedo borrar ???? osea desde adentro del programa??????
« Última modificación: 27 de Noviembre de 2009, 15:46:35 por japifer_22 »