Autor Tema: Guardar String en Buffer  (Leído 2893 veces)

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

Desconectado Rikr09

  • PIC16
  • ***
  • Mensajes: 112
Guardar String en Buffer
« 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!!! :-/

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Guardar String en Buffer
« Respuesta #1 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.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Guardar String en Buffer
« Respuesta #2 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 !

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Guardar String en Buffer
« Respuesta #3 en: 19 de Abril de 2013, 12:09:19 »
#include <stdio.h>
...
sprintf(Mensaje,"Buenos Dias");
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Guardar String en Buffer
« Respuesta #4 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 !

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Guardar String en Buffer
« Respuesta #5 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.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Guardar String en Buffer
« Respuesta #6 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...
« Última modificación: 19 de Abril de 2013, 12:53:48 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Guardar String en Buffer
« Respuesta #7 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.

Desconectado Rikr09

  • PIC16
  • ***
  • Mensajes: 112
Re: Guardar String en Buffer
« Respuesta #8 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

Desconectado Rikr09

  • PIC16
  • ***
  • Mensajes: 112
Re: Guardar String en Buffer
« Respuesta #9 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!!!!!

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Guardar String en Buffer
« Respuesta #10 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");
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Guardar String en Buffer
« Respuesta #11 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 !


Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Guardar String en Buffer
« Respuesta #12 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 !


 

anything