Connecting Tech Pros Worldwide Forums | Help | Site Map

assign constant string to BYTE array

Orange
Guest
 
Posts: n/a
#1: Jul 12 '06
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
Guest
 
Posts: n/a
#2: Jul 12 '06

re: assign constant string to BYTE array


Orange said:
Quote:
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.
Quote:
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
Guest
 
Posts: n/a
#3: Jul 12 '06

re: assign constant string to BYTE array



Orange wrote:
Quote:
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
Guest
 
Posts: n/a
#4: Jul 12 '06

re: assign constant string to BYTE array


Orange wrote:
Quote:
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).
Quote:
}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
Guest
 
Posts: n/a
#5: Jul 12 '06

re: assign constant string to BYTE array


On 12 Jul 2006 02:19:17 -0700, "Orange" <traapons@gmail.comwrote:
Quote:
>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
Guest
 
Posts: n/a
#6: Jul 12 '06

re: assign constant string to BYTE array


Orange schrieb:
Quote:
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
Closed Thread