Is there any buildin function or a alternative simple and fast way of escape a C character array that if used with e.g printf should yield original character array again.
char* str = "\tHello World\n";
char* escaped_str = escape(str); //should contain "\tHello World\n" with char \ ,t.
printf(escaped_str); //should print out [TAB]Hello World[nextline] similar to if str was printed.
Is there a simple way in c to escape a string with c escape characters.
Update
I have buffer containing a string with escape character. And i want to include in a C file. For that i need to escape it so it can be complied. I just need to know if there is simple way of doing it instead of scanning the buffer for \n \t etc and generating there c escape char.
for(int i=0; i< strlen(buffer);i++)
if(buffer[i]=='\n')
sprintf(dest,"\\n")
else ....
Update 2
I wrote this function. It work fine.
char* escape(char* buffer){
int i,j;
int l = strlen(buffer) + 1;
char esc_char[]= { '\a','\b','\f','\n','\r','\t','\v','\\'};
char essc_str[]= { 'a', 'b', 'f', 'n', 'r', 't', 'v','\\'};
char* dest = (char*)calloc( l*2,sizeof(char));
char* ptr=dest;
for(i=0;i<l;i++){
for(j=0; j< 8 ;j++){
if( buffer[i]==esc_char[j] ){
*ptr++ = '\\';
*ptr++ = essc_str[j];
break;
}
}
if(j == 8 )
*ptr++ = buffer[i];
}
*ptr='\0';
return dest;
}
No, there isn’t any standard function for creating the source code version of the string. But you could use the
iscntrlfunction to write one, or just use theswitchkeyword.But, unless your program writes out a C source file intended to be run through the compiler, you don’t need to work with escaped strings.
printfdoesn’t process character escape sequences, only variable insertions (%d,%s, etc)Specifically, the following produce the same output:
and
and
The second one isn’t a good idea, because if
strcontained%your program would produce bad output and could crash.EDIT: For producing the source code version, there are a couple of approaches:
Simpler, but less readable output:
More readable results: