Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
STRCSTR(3)		     C Programmer's Manual		    STRCSTR(3)

NAME
       strcstr - convert memory	block to printable C string notation

SYNOPSIS
       #include	<publib.h>
       void strcstr(char *str, size_t max, const void *block, size_t n);

DESCRIPTION
       strcstr	converts the contents of an arbitrary memory block (which need
       not be a	zero terminated	string)	into a printable notation using	normal
       C  string literal syntax.  This can be used for example to store	poten-
       tially binary data in a file, or	in debugging outputs.

       All characters for which	there is a simple  shorthand  escape  sequence
       (',  ",	?,  \, \a, \b, \f, \n, \r, \t, \v) are stored using that nota-
       tion.  \0 is stored as \0.   All	 other	non-printable  characters  are
       stored  using a hexadecimal escape sequence.  All other printable char-
       acters are stored as is.

       The isprint(3) macro is used to determine whether a character is	print-
       able  (i.e.,  whether  it is printed as is, or using special notation).
       Therefore, the output depends on	the locale.

RETURN VALUE
       strcstr returns nothing.

EXAMPLE
       The following code dumps	input to the standard output in	 a  guaranteed
       (modulo locale bugs) printable format.  It might	be used	for debugging.

	    #include <stdio.h>
	    #include <publib.h>

	    int	main(void) {
		 char line[512];
		 char cstr[512*(CHAR_BIT/4+1+2)+1];  /*	+2 for \x, +1 for \0,
					  the rest to be able to
					  store	the hex	code for
					  512 chars.  */

		 while (fgets(line, sizeof(line), stdin) != NULL) {
		      strcstr(cstr, sizeof(cstr), line,	strlen(line));
		      printf("%s0, cstr);
		 }
		 return	0;
	    }

SEE ALSO
       publib(3), strins(3)

AUTHOR
       Lars Wirzenius (lars.wirzenius@helsinki.fi)

Publib			     C Programmer's Manual		    STRCSTR(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | EXAMPLE | SEE ALSO | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=strcstr&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help