By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,750 Members | 1,221 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,750 IT Pros & Developers. It's quick & easy.

assign constant string to BYTE array

P: n/a
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

Jul 12 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a
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)
Jul 12 '06 #2

P: n/a

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.

Jul 12 '06 #3

P: n/a
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,

Jul 12 '06 #4

P: n/a
On 12 Jul 2006 02:19:17 -0700, "Orange" <tr******@gmail.comwrote:
>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
Jul 12 '06 #5

P: n/a
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
Jul 12 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.