TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Rikr09 en 19 de Abril de 2013, 10:23:14

Título: Guardar String en Buffer
Publicado por: Rikr09 en 19 de Abril de 2013, 10:23:14
Saludos amigos de TODOPIC!!!  ((:-))

Vengo esta vez a que por favor me ayuden con algo que quizás para mucho sea básico, pero tengo dudas acerca de como puedo hacer para Guardar una cadena de caracteres en un Buffer sin que se me presente como un Warning, es decir, deseo hacer esto:
Código: [Seleccionar]
BYTE Mensaje[20];

Mensaje[11] = "Buenos Dias";

Y cuando compilo presento el siguiente Warning:
Citar
warning: assignment makes integer from pointer without a cast
, so, no se qué hacer.

Agradezco su Ayuda!!! :-/
Título: Re: Guardar String en Buffer
Publicado por: AngelGris en 19 de Abril de 2013, 11:56:57
  ¿Con qué compilador estás trabajando?

  Cada elemento del array puede ser llenado con un valor. En tu ejemplo parecería que intentases llenar el elemento (11) con toda una cadena.
Título: Re: Guardar String en Buffer
Publicado por: RICHI777 en 19 de Abril de 2013, 12:04:27
Hola, independientemente del compilador que uses podrías hacer esto:

Código: C
  1. BYTE Mensaje[]= "Buenos Dias";

El compilador solo calculará el tamaño del array de bytes Mensaje.

En tu caso el compilador genera un warning, porque Mensaje es un array de bytes y vos estas intentando asignarle una cadena al elemento 11

Saludos !
Título: Re: Guardar String en Buffer
Publicado por: BrunoF en 19 de Abril de 2013, 12:09:19
#include <stdio.h>
...
sprintf(Mensaje,"Buenos Dias");
Título: Re: Guardar String en Buffer
Publicado por: RICHI777 en 19 de Abril de 2013, 12:14:27
Hola, lo que comenta Bruno es correcto, la contra que tiene fr hacelo así es que al utilizar algunas de las variantes de los xxxprintf el compilador suele agregar código en forma bestial ...

Saludos !
Título: Re: Guardar String en Buffer
Publicado por: AngelGris en 19 de Abril de 2013, 12:42:27
  No estoy seguro, pero creo que se podría recurrir a punteros para llenar el array ¿no? O a Strcpy.
Título: Re: Guardar String en Buffer
Publicado por: BrunoF en 19 de Abril de 2013, 12:48:31
En un lenguaje ANSI C, sí. El CCS hasta hace muy poco no permitía punteros a constantes. No se como andará ahora con eso...
Título: Re: Guardar String en Buffer
Publicado por: MerLiNz en 19 de Abril de 2013, 12:49:53
Normalmente una constante esta almacenada en la memoria rom por lo cual para pasarlo a la ram se necesita una funcion especifica para esto, dependiendo del compilador tiene sus funciones es cuestion de buscarlo y usar la que venga bien.
Título: Re: Guardar String en Buffer
Publicado por: Rikr09 en 19 de Abril de 2013, 13:21:25
  ¿Con qué compilador estás trabajando?

  Cada elemento del array puede ser llenado con un valor. En tu ejemplo parecería que intentases llenar el elemento (11) con toda una cadena.
Con el XC16! Y si viendolo de esa forma, si denota eso, pero no es mi idea! lo que yo quiero es guardar toda esa cadena en el Buffer
Título: Re: Guardar String en Buffer
Publicado por: Rikr09 en 19 de Abril de 2013, 13:26:14
Hola, independientemente del compilador que uses podrías hacer esto:

Código: C
  1. BYTE Mensaje[]= "Buenos Dias";

El compilador solo calculará el tamaño del array de bytes Mensaje.

En tu caso el compilador genera un warning, porque Mensaje es un array de bytes y vos estas intentando asignarle una cadena al elemento 11

Saludos !

Gracias!! Pero de esta forma no restrinjo a que el valor del Buffer sea siempre sea el mismo??? La idea es que ese Buffer pueda almacenar otros mensajes, configurables ya sea por teclado o por serial. Saludos!!!!!
Título: Re: Guardar String en Buffer
Publicado por: KALLITOS en 19 de Abril de 2013, 13:27:42
En ese caso lo que indico Bruno es lo correcto.

#include <stdio.h>
...
sprintf(Mensaje,"Buenos Dias");
Título: Re: Guardar String en Buffer
Publicado por: RICHI777 en 19 de Abril de 2013, 13:28:57
Hola, podrías hacerlo así

Código: C
  1. #include <string.h>
  2. ...
  3. BYTE buffer1;
  4.  
  5. strcpy( buffer1, "Hola mundo" );

Donde se copia en string completo mas el último caracter que es el 0.

Código: C
  1. #include <string.h>
  2. ...
  3. BYTE buffer1;
  4. BYTE buffer2[] = "Hola mundo";
  5.  
  6. memcpy( buffer1, buffer2, strlen( buffer2 ));

Donde se copia unicamente el texto, el 0 se omite.

Saludos !

Título: Re: Guardar String en Buffer
Publicado por: RICHI777 en 19 de Abril de 2013, 14:29:42
Hola, esto también es válido
Código: C
  1. BYTE Mensaje[80] = "Hola mundo";

Saludos !