Autor Tema: concatenación c18  (Leído 2010 veces)

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

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
concatenación c18
« en: 20 de Septiembre de 2011, 14:26:41 »
Estoy intentando concatenar caracteres recibidos por USART en una sola cadena pero no resulta. Tengo lo siguiente:

char Byte_USART;
char string[5];
char stringx[5];

do{
      while(!DataRdyUSART());

      Byte_USART=getcUSART(); //capturo un byte
      itoa(Byte_USART,stringx);   //convierto a cadena
      strcat(string,stringx); //concateno lo que hay en stringx a string
      printf("Concatenado: %c",string); //,uestro el resultado de la concatenación
}
while ( 27 != string[0]);

donde podria estar la falla?

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: concatenación c18
« Respuesta #1 en: 20 de Septiembre de 2011, 14:30:24 »
Hola, debes inicialilizar primero el string.

Código: [Seleccionar]
char Byte_USART;
char string[5] = ""; // <----------------
char stringx[5];

do{
      while(!DataRdyUSART());

      Byte_USART=getcUSART(); //capturo un byte
      itoa(Byte_USART,stringx);   //convierto a cadena
      strcat(string,stringx); //concateno lo que hay en stringx a string
      printf("Concatenado: %c",string); //,uestro el resultado de la concatenación
}
while ( 27 != string[0]);

Saludos !

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: concatenación c18
« Respuesta #2 en: 20 de Septiembre de 2011, 14:33:06 »
Gracias Mr. Richi, ahora si concatena bien.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: concatenación c18
« Respuesta #3 en: 20 de Septiembre de 2011, 14:35:50 »
Hola, igual tené en cuenta que cuando haces el printf podes perder caracteres.

Saludos !

Desconectado jorgejg

  • PIC12
  • **
  • Mensajes: 96
Re: concatenación c18
« Respuesta #4 en: 20 de Septiembre de 2011, 14:47:34 »
uhm a que te refieres con perder caracteres? a veces no llegan los caracteres que uno envia a la PC? mejor deberia usar el putrsUSART?

La concatenación se da en valores numericos, porque no se concatena en formato de caracteres ascii?

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: concatenación c18
« Respuesta #5 en: 20 de Septiembre de 2011, 17:39:59 »
Hola, te comentaba esto porque mientras esta trabajando la función printf ( no se donde descarga los caracteres ) podes estar recibiendo mas caracteres por la UART y esos mismo pueden ser ""perdidos".

Saludos !