Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   assign constant string to BYTE array (http://www.velocityreviews.com/forums/t443476-assign-constant-string-to-byte-array.html)

Orange 07-12-2006 09:19 AM

assign constant string to BYTE array
 
hi,

How to initialize the data variable.

typedef struct
{
long len;
BYTE data[];
}tag;

Eventhough i know it is error, i tried like this
t.data = "text";

help me to solve this problem

urs,
Orange


Richard Heathfield 07-12-2006 09:52 AM

Re: assign constant string to BYTE array
 
Orange said:

> hi,
>
> How to initialize the data variable.
>
> typedef struct
> {
> long len;
> BYTE data[];
> }tag;


Since BYTE is not defined, this is not going to compile.

> Eventhough i know it is error, i tried like this
> t.data = "text";


typedef struct
{
long len;
const char *data;
} tag;

tag t;

t.data = "text";

will work, but it may not do what you want it to do. Since you don't specify
what you want it to do, I'll leave it there.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)

pankaj 07-12-2006 12:42 PM

Re: assign constant string to BYTE array
 

Orange wrote:
> hi,
>
> How to initialize the data variable.
>
> typedef struct
> {
> long len;
> BYTE data[];
> }tag;
>
> Eventhough i know it is error, i tried like this
> t.data = "text";
>
> help me to solve this problem
>
> urs,
> Orange


hi

first of all I want to know about BYTE type.

anyways as u are trying to initialize it with "text" so I assume it as
char pointer.
so ur problem is
typedef struct
{
long len;
char* data;
}tag;

now u want to initialize member variable data.
do u know y ur method is wrong......?????
bcos initialization can be done only when we are defineing the
variable.

so to initialize data member variable u need to perform
struct tag variable = { 12345, "text"};

this is the way to initialize variable.
Please let you clear urself that initialization can be done only at the
defining time of variable.

like
struct tag t;
t.data = "text";
is not initializing it is a sort of assigning, which is also wrong.
you can assign only address to pointer type variables with some
exceptions.


goose 07-12-2006 03:11 PM

Re: assign constant string to BYTE array
 
Orange wrote:
> hi,
>
> How to initialize the data variable.
>
> typedef struct
> {
> long len;
> BYTE data[];


Use "char" not "BYTE" if you mean "char". Use
"char data[SIZE]" if you want to store text in there
and "char *data" if you just want to reference text
from there. IIRC, c89 won't allow this (or is
supposed to issue a diagnostic for this).

> }tag;
>
> Eventhough i know it is error, i tried like this
> t.data = "text";
>


If you really want to initialise, see Mr. Heathfields
response below; if you just want to assign (I'm guessing
from the example usage) then do this:

typedef struct
{
long len;
char data[20]; /* Use your own maximum size here */
} tag;

tag t;

strncpy (t.data, "Text", sizeof t.data - 1);
t.data [sizeof t.data - 1] = 0;


hth
goose,


Al Balmer 07-12-2006 04:11 PM

Re: assign constant string to BYTE array
 
On 12 Jul 2006 02:19:17 -0700, "Orange" <traapons@gmail.com> wrote:

>hi,
>
>How to initialize the data variable.
>
>typedef struct
>{
> long len;
> BYTE data[];
>}tag;
>
>Eventhough i know it is error, i tried like this
>t.data = "text";
>
>help me to solve this problem
>
>urs,
>Orange


Here's the best help I can offer - get a good book about the C
language and read it. I suggest K&R.

--
Al Balmer
Sun City, AZ

Thomas J. Gritzan 07-12-2006 04:17 PM

Re: assign constant string to BYTE array
 
Orange schrieb:
> hi,
>
> How to initialize the data variable.
>
> typedef struct
> {
> long len;
> BYTE data[];
> }tag;
>
> Eventhough i know it is error, i tried like this
> t.data = "text";


Assuming BYTE is a typedef to char,
and you got some data and have to store it into this struct (because
some API need it this way):

tag* createTagStruct(const char* data, long length)
{
tag* result = malloc(sizeof(tag) + length);

result->len = length;
memcpy(result->data, data, length);

return result;
}

Don't forget to free the pointer (returned by the function) after you
used it.
If you don't have a variable length data, but a constant or maximum
length, look at goose's posting.

--
Thomas


All times are GMT. The time now is 07:40 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.