![]() |
\x used with no following hex digits
Hi ,
I have a program where I want to print a string "457e31b2db200dc125f3e00886ff57de" like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" .. But in each and every case it is giving an error : test.c:16:9 : \x used with no following hex digits *********Test.c**************** #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <wchar.h> int main(int argc, char* argv[]) { int i; unsigned char mbBuf[16] = "457e31b2db200dc125f3e00886ff57de"; for(i=0;i<16;i++) printf("\x%02",mbBuf[i]); } Need help !! |
Re: \x used with no following hex digits
In article <1154336312.512283.284350@m79g2000cwm.googlegroups .com>,
<abhi147@gmail.com> wrote: > I have a program where I want to print a string >"457e31b2db200dc125f3e00886ff57de" >like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" > printf("\x%02",mbBuf[i]); printf("\\x%02",mbBuf[i]); When you want a \ to appear in the output string, you have to escape the \ by doubling it. -- "No one has the right to destroy another person's belief by demanding empirical evidence." -- Ann Landers |
Re: \x used with no following hex digits
abhi147@gmail.com wrote:
> Hi , > > I have a program where I want to print a string > "457e31b2db200dc125f3e00886ff57de" > like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" > . But in each and every case it is giving an error : [OP's code at EOM] #include <stdio.h> int main(void) { unsigned char mbBuf[] = "457e31b2db200dc125f3e00886ff57de"; unsigned i, n = sizeof mbBuf - 1; for (i = 0; i < n; i += 2) printf("\\x%c%c", mbBuf[i], mbBuf[i + 1]); return 0; } [OP's code] > test.c:16:9 : \x used with no following hex digits > > *********Test.c**************** > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > #include <locale.h> > #include <wchar.h> > > int main(int argc, char* argv[]) > { > int i; > unsigned char mbBuf[16] = "457e31b2db200dc125f3e00886ff57de"; > for(i=0;i<16;i++) > printf("\x%02",mbBuf[i]); > } |
Re: \x used with no following hex digits
"Walter Roberson" <roberson@ibd.nrc-cnrc.gc.ca> ha scritto nel messaggio news:eakgre$a2o$1@canopus.cc.umanitoba.ca... > In article <1154336312.512283.284350@m79g2000cwm.googlegroups .com>, > <abhi147@gmail.com> wrote: > > I have a program where I want to print a string > >"457e31b2db200dc125f3e00886ff57de" > >like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" > > > printf("\x%02",mbBuf[i]); > > printf("\\x%02",mbBuf[i]); Wrong code. You don't print mbBuf[i]. > > When you want a \ to appear in the output string, you have to > escape the \ by doubling it. #include <stdio.h> #include <stdlib.h> int main(void) { int i; /* even number of chars !!! */ unsigned char mbBuf[] = "457e31b2db200dc125f3e00886ff57de"; for(i=0;i<(sizeof(mbBuf) / sizeof(mbBuf[0]))/2;i++) { printf("\\x%c%c",mbBuf[2*i],mbBuf[2*i+1]); } printf("\n"); return EXIT_SUCCESS; } -- Giorgio Silvestri DSP/Embedded/Real Time OS (RTOS) Software Engineer |
Re: \x used with no following hex digits
Martin Ambuhl wrote:
> abhi147@gmail.com wrote: >> Hi , >> >> I have a program where I want to print a string >> "457e31b2db200dc125f3e00886ff57de" >> like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" >> . But in each and every case it is giving an error : > > [OP's code at EOM] > > #include <stdio.h> > > int main(void) > { > unsigned char mbBuf[] = "457e31b2db200dc125f3e00886ff57de"; > unsigned i, n = sizeof mbBuf - 1; ^^^ should be 2. Sorry. [e.g. if mbBuf[] = "1234", the last pair begins at mbBuf[2]. sizeof mbBuf is 5, n = 3, and 2 is the largest integer less than 3]. Or I could set n = strlen(mbBuf) - 1 instead, but only at the cost of an extra function call and #including <string.h>.] > for (i = 0; i < n; i += 2) > printf("\\x%c%c", mbBuf[i], mbBuf[i + 1]); > return 0; > } > > > > [OP's code] >> test.c:16:9 : \x used with no following hex digits >> >> *********Test.c**************** >> #include <stdio.h> >> #include <stdlib.h> >> #include <string.h> >> #include <locale.h> >> #include <wchar.h> >> >> int main(int argc, char* argv[]) >> { >> int i; >> unsigned char mbBuf[16] = "457e31b2db200dc125f3e00886ff57de"; >> for(i=0;i<16;i++) >> printf("\x%02",mbBuf[i]); } |
Re: \x used with no following hex digits
"Martin Ambuhl" <mambuhl@earthlink.net> ha scritto nel messaggio news:4j638bF6abdkU1@individual.net... > abhi147@gmail.com wrote: > > Hi , > > > > I have a program where I want to print a string > > "457e31b2db200dc125f3e00886ff57de" > > like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" > > . But in each and every case it is giving an error : > > [OP's code at EOM] > > #include <stdio.h> > > int main(void) > { > unsigned char mbBuf[] = "457e31b2db200dc125f3e00886ff57de"; > unsigned i, n = sizeof mbBuf - 1; > for (i = 0; i < n; i += 2) > printf("\\x%c%c", mbBuf[i], mbBuf[i + 1]); > return 0; > } It could not work. Missing: printf("\n"); /* :-) */ before return 0; -- Giorgio Silvestri DSP/Embedded/Real Time OS (RTOS) Software Engineer |
Re: \x used with no following hex digits
Giorgio Silvestri wrote:
> "Martin Ambuhl" <mambuhl@earthlink.net> ha scritto nel messaggio > news:4j638bF6abdkU1@individual.net... >> abhi147@gmail.com wrote: >>> Hi , >>> >>> I have a program where I want to print a string >>> "457e31b2db200dc125f3e00886ff57de" >>> like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" >>> . But in each and every case it is giving an error : >> [OP's code at EOM] >> >> #include <stdio.h> >> >> int main(void) >> { >> unsigned char mbBuf[] = "457e31b2db200dc125f3e00886ff57de"; >> unsigned i, n = sizeof mbBuf - 1; >> for (i = 0; i < n; i += 2) >> printf("\\x%c%c", mbBuf[i], mbBuf[i + 1]); >> return 0; >> } > > It could not work. > > Missing: > > printf("\n"); /* :-) */ > > before > > return 0; Thanks for pointing out one of (at least) two errors in an extremely simple program. I shouldn't offer advice after being up three days. |
Re: \x used with no following hex digits
"Giorgio Silvestri" <giorgiosilvestri@libero.it> writes:
[...] > It could not work. > > Missing: > > printf("\n"); /* :-) */ > > before > > return 0; It could work. Whether a trailing '\n' is required for a text stream is implementation-defined. -- Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst> San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst> We must do something. This is something. Therefore, we must do this. |
Re: \x used with no following hex digits
Martin Ambuhl wrote:
> Giorgio Silvestri wrote: > > "Martin Ambuhl" <mambuhl@earthlink.net> ha scritto nel messaggio > > news:4j638bF6abdkU1@individual.net... > >> abhi147@gmail.com wrote: > >>> Hi , > >>> > >>> I have a program where I want to print a string > >>> "457e31b2db200dc125f3e00886ff57de" > >>> like "\x45\x7e\x31\xb2\xdb\x20\x0d\xc1\x25\xf3\xe0\x08\ x86\xff\x57\xde" > >>> . But in each and every case it is giving an error : > >> [OP's code at EOM] > >> > >> #include <stdio.h> > >> > >> int main(void) > >> { > >> unsigned char mbBuf[] = "457e31b2db200dc125f3e00886ff57de"; > >> unsigned i, n = sizeof mbBuf - 1; > >> for (i = 0; i < n; i += 2) > >> printf("\\x%c%c", mbBuf[i], mbBuf[i + 1]); > >> return 0; > >> } > > > > It could not work. > > > > Missing: > > > > printf("\n"); /* :-) */ > > > > before > > > > return 0; > > Thanks for pointing out one of (at least) two errors in an extremely > simple program. I shouldn't offer advice after being up three days. Thanks a lot to all of you . Although it solved the question i had asked .. But now i m stuck with another problem related to the query . Actually when i put a "\x" manually in front of every two digits in the string the string gets printed as "¦ñ²±Z˜-=§ßÉ¢Sp{¦" The code which prints these special characters is : int main(int argc, char* argv[]) { char mbBuf[BUF_SIZE] = "\xb2\xa4\xfd\xf1\x5a\xf7\xc4\xf2\x15\xe1\x90\x9b\ xe4\x70\x7b\xdb"; printf("\nThe mbBuf string is %s\n",mbBuf); } but when i print the string "b2a4fdf15af7c4f215e1909be4707bdb" with the \x using the for loop it doesn't print those special chars :-( |
Re: \x used with no following hex digits
Keith Thompson said:
> "Giorgio Silvestri" <giorgiosilvestri@libero.it> writes: > [...] >> It could not work. >> >> Missing: >> >> printf("\n"); /* :-) */ >> >> before >> >> return 0; > > It could work. Whether a trailing '\n' is required for a text stream > is implementation-defined. Yes, but I think this is a translation issue. It seems to me that maybe Giorgio probably meant "it might not work", perhaps. -- 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) |
| All times are GMT. The time now is 11:21 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.