Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 6de995e505c7785275e786dd8bd6ac88 > files > 71

libcgi-devel-1.0-10.fc12.i686.rpm

<!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> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a0">str_base64_encode</a> (char *str)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a1">str_base64_decode</a> (char *str)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a2">addnslashes</a> (char *s, int n)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a3">addslashes</a> (char *s)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a4">stripnslashes</a> (char *s, int n)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a5">stripslashes</a> (char *str)</td></tr>
<tr><td>&nbsp;</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&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a6">ltrim</a> (char *str)</td></tr>
<tr><td>&nbsp;</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&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a7">rtrim</a> (char *str)</td></tr>
<tr><td>&nbsp;</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&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a8">trim</a> (char *str)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</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>&nbsp;</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 **&nbsp;</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>&nbsp;</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 *&nbsp;</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>&nbsp;</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 *&nbsp;</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>&nbsp;</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&nbsp;</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>&nbsp;</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&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a15">strpos</a> (char *s, char *ch)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</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>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a17">recvline</a> (FILE *s)</td></tr>
<tr><td>&nbsp;</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 *&nbsp;</td><td valign=bottom><a class="el" href="group__libcgi__string.html#a18">make_string</a> (char *s,...)</td></tr>
<tr><td>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>s</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>n</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to parse </td></tr>
    <tr><td valign=top><em>n</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>s</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>token</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>total</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to parse </td></tr>
    <tr><td valign=top><em>token</em>&nbsp;</td><td>Character delimiter to search. </td></tr>
    <tr><td valign=top><em>total</em>&nbsp;</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>, &amp;total);
  <span class="keywordflow">for</span> (i = 0; i &lt; 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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>str</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>s</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>...&nbsp;</td>
          <td class="mdname" nowrap>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">FILE *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>s</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>str</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>str</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>str</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>delim</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>with</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>n</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to parse </td></tr>
    <tr><td valign=top><em>*delim</em>&nbsp;</td><td>Character to search that will be replaced </td></tr>
    <tr><td valign=top><em>with</em>&nbsp;</td><td>String to replace with </td></tr>
    <tr><td valign=top><em>n</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>str</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>delim</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>with</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to parse </td></tr>
    <tr><td valign=top><em>delim</em>&nbsp;</td><td>Character to search that will be replaced </td></tr>
    <tr><td valign=top><em>with</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>s</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>start</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>count</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to search </td></tr>
    <tr><td valign=top><em>start</em>&nbsp;</td><td>Initial offset to begin search </td></tr>
    <tr><td valign=top><em>count</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>s</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>n</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to parse </td></tr>
    <tr><td valign=top><em>n</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>str</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>s</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>ch</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>count</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String where the search will be done </td></tr>
    <tr><td valign=top><em>ch</em>&nbsp;</td><td>Character to search </td></tr>
    <tr><td valign=top><em>count</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>s</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>ch</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String where the search will be done </td></tr>
    <tr><td valign=top><em>ch</em>&nbsp;</td><td>Character to search </td></tr>
    <tr><td valign=top><em>count</em>&nbsp;</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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>src</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>start</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>count</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</td><td>String to copy from </td></tr>
    <tr><td valign=top><em>start</em>&nbsp;</td><td>Initial offset </td></tr>
    <tr><td valign=top><em>count</em>&nbsp;</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">// -&gt; 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">(&nbsp;</td>
          <td class="md" nowrap valign="top">char *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>str</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </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>&nbsp;</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>