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 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 7 Years Ago by Ancient Dragon: n/a

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 7 Years Ago by dkalita: n/a

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 article has been dead for over six months. Start a new discussion instead.