<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Strings</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3-rc2 --> <center> <a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>Strings</h1><hr><a name="_details"></a><h2>Detailed Description</h2> General string manipulation and utilities functions. <p> <p> <table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Functions</h2></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a0">str_base64_encode</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Encodes a given tring to its base64 form.</em> <a href="#a0"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a1">str_base64_decode</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Decode a base64 encoded string.</em> <a href="#a1"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a2">addnslashes</a> (char *s, int n)</td></tr> <tr><td> </td><td><font size=-1><em>Same to <a class="el" href="group__libcgi__string.html#a3">addslashes()</a>, except that this one only do the action while 'n' is great than 0.</em> <a href="#a2"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a3">addslashes</a> (char *s)</td></tr> <tr><td> </td><td><font size=-1><em>Add slashes to a string when necessary.</em> <a href="#a3"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a4">stripnslashes</a> (char *s, int n)</td></tr> <tr><td> </td><td><font size=-1><em>Strip no more than 'n' slashes from a string.</em> <a href="#a4"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a5">stripslashes</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Strip slashes from a string.</em> <a href="#a5"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a6">ltrim</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Strip left white spaces from a string.</em> <a href="#a6"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a7">rtrim</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Strip right white spaces from a string.</em> <a href="#a7"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a8">trim</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Strip both left and right white spaces from a string.</em> <a href="#a8"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a9">substr</a> (char *src, const int start, const int count)</td></tr> <tr><td> </td><td><font size=-1><em>Copy part of a string.</em> <a href="#a9"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char ** </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a10">explode</a> (char *src, const char *token, int *total)</td></tr> <tr><td> </td><td><font size=-1><em>Create an array from a string separated by some special char.</em> <a href="#a10"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a11">str_nreplace</a> (char *src, const char *delim, const char *with, int n)</td></tr> <tr><td> </td><td><font size=-1><em>Replace characteres in a string, but not more than 'n'.</em> <a href="#a11"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a12">str_replace</a> (char *str, const char *delim, const char *with)</td></tr> <tr><td> </td><td><font size=-1><em>Replace characteres in a string.</em> <a href="#a12"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a14">strnpos</a> (char *s, char *ch, unsigned int count)</td></tr> <tr><td> </td><td><font size=-1><em>Returns the position of a character in a string, but parses no more that 'n' chars.</em> <a href="#a14"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a15">strpos</a> (char *s, char *ch)</td></tr> <tr><td> </td><td><font size=-1><em>Returns the position of a character in a string.</em> <a href="#a15"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a16">strdel</a> (char *s, int start, int count)</td></tr> <tr><td> </td><td><font size=-1><em>Delete characters from a string.</em> <a href="#a16"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a17">recvline</a> (FILE *s)</td></tr> <tr><td> </td><td><font size=-1><em>Reads an entire line.</em> <a href="#a17"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__string.html#a18">make_string</a> (char *s,...)</td></tr> <tr><td> </td><td><font size=-1><em>Makes a string.</em> <a href="#a18"></a><em></em></font><br><br></td></tr> </table> <hr><h2>Function Documentation</h2> <a name="a2" doxytag="string.c::addnslashes"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* addnslashes </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>n</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Same to <a class="el" href="group__libcgi__string.html#a3">addslashes()</a>, except that this one only do the action while 'n' is great than 0. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>String to parse </td></tr> <tr><td valign=top><em>n</em> </td><td>Number of characters to work with. </td></tr> </table> </dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a3">addslashes()</a> <div class="fragment"><pre> <span class="keywordtype">char</span> *name = <span class="stringliteral">"My test string is called \"foobar\""</span>; puts(name); <span class="comment">// will display My test string is called "foobar"</span> name = <a class="code" href="group__libcgi__string.html#a2">addnslashes</a>(name, 31); puts(name); <span class="comment">// will display My test string is called \"foobar"</span> </pre></div></dd></dl> </td> </tr> </table> <a name="a3" doxytag="string.c::addslashes"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* addslashes </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>s</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Add slashes to a string when necessary. <p> Adds a '\' in every quote ( " ), apostrophe ( ' ) or backslash ( \ ) It's useful when working with databases, for example, because someone can try insert this caracters to try hack the application... <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>*s</em> </td><td>String to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string, with slashes </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>stripslashes, addnslashes</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *name = <span class="stringliteral">"My test string is called \"foobar\""</span>; puts(name); <span class="comment">// will display My test string is called "foobar"</span> name = <a class="code" href="group__libcgi__string.html#a3">addslashes</a>(name); puts(name); <span class="comment">// will display My test string is called \"foobar\"</span> </pre></div> </td> </tr> </table> <a name="a10" doxytag="string.c::explode"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char** explode </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>src</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>token</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>total</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Create an array from a string separated by some special char. <p> Divides the src string in pieces, each delimited by token and storing the total of pieces in total <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>src</em> </td><td>String to parse </td></tr> <tr><td valign=top><em>token</em> </td><td>Character delimiter to search. </td></tr> <tr><td valign=top><em>total</em> </td><td>An integer variable passed as reference, which stores the total of itens of the array </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The array, where each item is one separeted by token</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> **pieces; <span class="keywordtype">char</span> *name = <span class="stringliteral">"This,is,a,string,of,test"</span>; <span class="keywordtype">int</span> total, i; pieces = <a class="code" href="group__libcgi__string.html#a10">explode</a>(name, <span class="stringliteral">","</span>, &total); <span class="keywordflow">for</span> (i = 0; i < total; i++) printf(<span class="stringliteral">"Piece %d: %s\n"</span>, i, *(pieces+i)); </pre></div> </td> </tr> </table> <a name="a6" doxytag="string.c::ltrim"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void ltrim </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Strip left white spaces from a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>str</em> </td><td>String to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string, without left spaces </dd></dl> <dl compact><dt><b>Author:</b></dt><dd>Original code was contribuition by Erik Jansson </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>rtrim, trim</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *s = <span class="stringliteral">" String with spaces "</span>; printf(<span class="stringliteral">"_%s_\n"</span>, s); s = <a class="code" href="group__libcgi__string.html#a6">ltrim</a>(s); printf(<span class="stringliteral">"_%s_\n"</span>, s); </pre></div> </td> </tr> </table> <a name="a18" doxytag="string.c::make_string"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* make_string </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>... </td> <td class="mdname" nowrap> </td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Makes a string. <p> Works like printf(), with the difference that it returns a string that is the concatenation of the values passed as parameter. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>*s</em> </td><td>Inicial String and optionally formatation parameters ( just s is allowed ) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new String <div class="fragment"><pre> <span class="keywordtype">char</span> *sql = <a class="code" href="group__libcgi__string.html#a18">make_string</a>(<span class="stringliteral">"INSERT INTO myTable VALUES ('%s', '%s', '%s')"</span>, varValue1, varValue2, varValue3); </pre></div></dd></dl> <dl compact><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>String limits/error checking </dd></dl> </td> </tr> </table> <a name="a17" doxytag="string.c::recvline"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* recvline </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">FILE * </td> <td class="mdname1" valign="top" nowrap> <em>s</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Reads an entire line. <p> Reads a line from the file specified by the file pointer passed as parameter. This function is intead to replace the non-portable GNU getline() function. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>File pointer to the file to read from. </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>String containing the line read or NULL if no more line are available </dd></dl> <dl compact><dt><b>Author:</b></dt><dd>Robert Csok </dd></dl> </td> </tr> </table> <a name="a7" doxytag="string.c::rtrim"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void rtrim </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Strip right white spaces from a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>str</em> </td><td>String to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string, without left spaces </dd></dl> <dl compact><dt><b>Author:</b></dt><dd>Original code was contribuition by Erik Jansson </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>ltrim, trim</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *s = <span class="stringliteral">" String with spaces "</span>; printf(<span class="stringliteral">"_%s_\n"</span>, s); s = <a class="code" href="group__libcgi__string.html#a7">rtrim</a>(s); printf(<span class="stringliteral">"_%s_\n"</span>, s); </pre></div> </td> </tr> </table> <a name="a1" doxytag="base64.c::str_base64_decode"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* str_base64_decode </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Decode a base64 encoded string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>*str</em> </td><td>Encoded String to decode </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The decoded string </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a0">str_base64_encode</a> </dd></dl> </td> </tr> </table> <a name="a0" doxytag="base64.c::str_base64_encode"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* str_base64_encode </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Encodes a given tring to its base64 form. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>*str</em> </td><td>String to convert </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>Base64 encoded String </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a1">str_base64_decode</a> </dd></dl> </td> </tr> </table> <a name="a11" doxytag="string.c::str_nreplace"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* str_nreplace </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>src</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>delim</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>with</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>n</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Replace characteres in a string, but not more than 'n'. <p> Replace all occourences of *delim on *src with characteres pointed by *with, stopping after 'n' char. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>*src</em> </td><td>String to parse </td></tr> <tr><td valign=top><em>*delim</em> </td><td>Character to search that will be replaced </td></tr> <tr><td valign=top><em>with</em> </td><td>String to replace with </td></tr> <tr><td valign=top><em>n</em> </td><td>Maximum number of chars to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a12">str_replace</a></dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *linux = <span class="stringliteral">"Linux C"</span>; linux = <a class="code" href="group__libcgi__string.html#a11">str_nreplace</a>(linux, <span class="stringliteral">"C"</span>, <span class="stringliteral">"Cool"</span>, strlen(linux)); puts(linux); <span class="comment">// -- OR --</span> <span class="keywordtype">char</span> *name = <span class="stringliteral">"rAfAel steil"</span>; name = <a class="code" href="group__libcgi__string.html#a11">str_nreplace</a>(name, <span class="stringliteral">"A"</span>, <span class="stringliteral">"a"</span>, 3); puts(name); </pre></div> </td> </tr> </table> <a name="a12" doxytag="string.c::str_replace"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* str_replace </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>str</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>delim</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>with</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Replace characteres in a string. <p> Replace all occourences of *delim on *src with characteres pointed by *with. The problem with the folowing code is that the function only searches for the first caracter of *delim, ingoring the rest. Other problem is speed relacioned: note that the function ever compare the length of *with to do the correct action. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>src</em> </td><td>String to parse </td></tr> <tr><td valign=top><em>delim</em> </td><td>Character to search that will be replaced </td></tr> <tr><td valign=top><em>with</em> </td><td>String to replace with </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a11">str_nreplace</a></dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *linux = <span class="stringliteral">"Linux C"</span>; linux = <a class="code" href="group__libcgi__string.html#a12">str_replace</a>(linux, <span class="stringliteral">"C"</span>, <span class="stringliteral">"Cool"</span>); puts(linux); <span class="comment">// -- OR --</span> <span class="keywordtype">char</span> *name = <span class="stringliteral">"rAfAel steil"</span>; name = <a class="code" href="group__libcgi__string.html#a12">str_replace</a>(name, <span class="stringliteral">"A"</span>, <span class="stringliteral">"a"</span>); puts(name); </pre></div> </td> </tr> </table> <a name="a16" doxytag="string.c::strdel"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* strdel </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>start</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>count</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Delete characters from a string. <p> Delete count characters of s, starting in start <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>String to search </td></tr> <tr><td valign=top><em>start</em> </td><td>Initial offset to begin search </td></tr> <tr><td valign=top><em>count</em> </td><td>Number of characteres to delete </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>strndel()</dd></dl> <div class="fragment"><pre> *txt = <span class="stringliteral">"Some text to test anything"</span>; puts(txt); txt = <a class="code" href="group__libcgi__string.html#a16">strdel</a>(txt, 2, 8); puts(txt); </pre></div> </td> </tr> </table> <a name="a4" doxytag="string.c::stripnslashes"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* stripnslashes </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>n</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Strip no more than 'n' slashes from a string. <p> Strip the backslash character ( \ ) from a string, stopping after 'n' char <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>String to parse </td></tr> <tr><td valign=top><em>n</em> </td><td>Maximum number of chars to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string, without slashes </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>addslashes, stripslashes</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *name = <span class="stringliteral">"My another string is called \\\"blablabla\\\""</span>; puts(name); <span class="comment">// will display My another string is called \"blablabla\"</span> name = <a class="code" href="group__libcgi__string.html#a5">stripslashes</a>(name, 33); puts(name); <span class="comment">// will display My another string is called "blablabla\"</span> </pre></div> </td> </tr> </table> <a name="a5" doxytag="string.c::stripslashes"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* stripslashes </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Strip slashes from a string. <p> Strip the backslash character ( \ ) from a string <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>String to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string, without slashes </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>addslashes, stripnslashes</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *name = <span class="stringliteral">"My another string is called \\\"blablabla\\\""</span>; puts(name); <span class="comment">// will display My another string is called \"blablabla\"</span> name = <a class="code" href="group__libcgi__string.html#a5">stripslashes</a>(name); puts(name); <span class="comment">// will display My another string is called "blablabla"</span> </pre></div> </td> </tr> </table> <a name="a14" doxytag="string.c::strnpos"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int strnpos </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>ch</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>unsigned int </td> <td class="mdname" nowrap> <em>count</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Returns the position of a character in a string, but parses no more that 'n' chars. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>String where the search will be done </td></tr> <tr><td valign=top><em>ch</em> </td><td>Character to search </td></tr> <tr><td valign=top><em>count</em> </td><td>Maximum number of chars to parse before exiting the function </td></tr> </table> </dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a15">strpos()</a> </dd></dl> </td> </tr> </table> <a name="a15" doxytag="string.c::strpos"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int strpos </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>s</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>ch</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Returns the position of a character in a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>s</em> </td><td>String where the search will be done </td></tr> <tr><td valign=top><em>ch</em> </td><td>Character to search </td></tr> <tr><td valign=top><em>count</em> </td><td>Maximum number of ch to search </td></tr> </table> </dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__string.html#a14">strnpos()</a> </dd></dl> </td> </tr> </table> <a name="a9" doxytag="string.c::substr"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* substr </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname" nowrap> <em>src</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const int </td> <td class="mdname" nowrap> <em>start</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const int </td> <td class="mdname" nowrap> <em>count</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Copy part of a string. <p> Copy count characters from src, starting from start <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>src</em> </td><td>String to copy from </td></tr> <tr><td valign=top><em>start</em> </td><td>Initial offset </td></tr> <tr><td valign=top><em>count</em> </td><td>Number of chars to copy </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *part, *str = <span class="stringliteral">"Test one, test two"</span>; part = <a class="code" href="group__libcgi__string.html#a9">substr</a>(str, 1, 5); puts(part); <span class="comment">// -> est o</span> </pre></div> </td> </tr> </table> <a name="a8" doxytag="string.c::trim"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void trim </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Strip both left and right white spaces from a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>str</em> </td><td>String to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string, without left spaces </dd></dl> <dl compact><dt><b>Author:</b></dt><dd>Original code was contribuition by Erik Jansson </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>ltrim, trim</dd></dl> <div class="fragment"><pre> <span class="keywordtype">char</span> *s = <span class="stringliteral">" String with spaces "</span>; printf(<span class="stringliteral">"_%s_\n"</span>, s); s = <a class="code" href="group__libcgi__string.html#a8">trim</a>(s); printf(<span class="stringliteral">"_%s_\n"</span>, s); </pre></div> </td> </tr> </table> <hr><address style="align: right;"><small>Generated on Thu Mar 13 10:13:11 2003 for LibCGI by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.3-rc2 </small></address> </body> </html>