Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > assign constant string to BYTE array

Reply
Thread Tools

assign constant string to BYTE array

 
 
Orange
Guest
Posts: n/a
 
      07-12-2006
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

 
Reply With Quote
 
 
 
 
Richard Heathfield
Guest
Posts: n/a
 
      07-12-2006
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)
 
Reply With Quote
 
 
 
 
pankaj
Guest
Posts: n/a
 
      07-12-2006

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.

 
Reply With Quote
 
goose
Guest
Posts: n/a
 
      07-12-2006
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,

 
Reply With Quote
 
Al Balmer
Guest
Posts: n/a
 
      07-12-2006
On 12 Jul 2006 02:19:17 -0700, "Orange" <(E-Mail Removed)> 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
 
Reply With Quote
 
Thomas J. Gritzan
Guest
Posts: n/a
 
      07-12-2006
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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Can I include include a constant in a constant array? Fredxx VHDL 3 07-15-2009 07:39 AM
concatenate a constant to constant string using macros sinbad C Programming 7 06-19-2008 05:28 PM
"error C2057: expected constant expression", "error C2466: cannot allocate an array of constant size 0". Why doesn't my simple program work??? hn.ft.pris@gmail.com C++ 13 01-22-2007 02:03 PM
Converting a Primative byte array to a Byte array object Kirby Java 3 10-08-2004 03:01 AM
Appending byte[] to another byte[] array Bharat Bhushan Java 15 08-05-2003 07:52 PM



Advertisments