0

Using \x I can specify hexadecimal numbers in strings in C, but if I put \x00 then it interprets it as an instruction to terminate the string. As a result I can't express a hexadecimal number with 00 in it using a string! Is there some way around this?

3
Contributors
3
Replies
4
Views
8 Years
Discussion Span
Last Post by Ancient Dragon
0

No way around it if you want to use normal string handling functions found in string.h and stdio.h. You will have to treat the character array as containing binary data.

Well, I suppose you could create the string to contain normal decimal values such as char num[] = "01";

Edited by Ancient Dragon: n/a

0

Using \x I can specify hexadecimal numbers in strings in C, but if I put \x00 then it interprets it as an instruction to terminate the string. As a result I can't express a hexadecimal number with 00 in it using a string! Is there some way around this?

no u cant do that. But if u want to contain that in a string u can try by declaring a
char *str;
variavle and store whatever u want, say
*(str+4) = 0;
and then u can proceed with *(str+5)='a' etc. But if u do this u wont be able to apply any inbuilt functions available in string.h since it will take the 0 as string termination mark. U have to write ur own functions to achieve whatever u want. the only thing extra u will need to do is to keep a length variable along with that or if u use c++ u can write your own string class such that

class MyString
{
char *str;
int length;
public:
MyString();
int length();
....
...//etc....
}

Edited by dkalita: n/a

0

There are a few win32 api functions that use embedded '\0', what they do is use two of them to indicate the end of the data. But there again they had to write their own function to parse the character array.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.