24.01.2014 Views

Codice

Codice

Codice

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

358 volume VI os16<br />

Sorgenti della libreria generale 359<br />

105.11.6 lib/string/memset.c<br />

105.11.11 lib/string/strcpy.c<br />

«<br />

Si veda la sezione 98.72.<br />

Si veda la sezione 98.108.<br />

«<br />

3140001 |#include <br />

3140002 |//----------------------------------------------------------------------<br />

3190001 |#include <br />

3190002 |//----------------------------------------------------------------------<br />

3140003 |void *<br />

3140004 |memset (void *memory, int c, size_t n)<br />

3140005 |{<br />

3140006 | char *m = (char *) memory;<br />

3140007 | size_t i;<br />

3140008 | for (i = 0; n > 0 && i < n; i++)<br />

3140009 | {<br />

3140010 | m[i] = (char) c;<br />

3140011 | }<br />

3140012 | return memory;<br />

3140013 |}<br />

3190003 |char *<br />

3190004 |strcpy (char *restrict dst, const char *restrict org)<br />

3190005 |{<br />

3190006 | size_t i;<br />

3190007 | for (i = 0; org[i] != 0; i++)<br />

3190008 | {<br />

3190009 | dst[i] = org[i];<br />

3190010 | }<br />

3190011 | dst[i] = 0;<br />

3190012 | return dst;<br />

3190013 |}<br />

105.11.7 lib/string/strcat.c<br />

105.11.12 lib/string/strcspn.c<br />

«<br />

Si veda la sezione 98.104.<br />

Si veda la sezione 98.118.<br />

«<br />

«<br />

3150001 |#include <br />

3150002 |//----------------------------------------------------------------------<br />

3150003 |char *<br />

3150004 |strcat (char *restrict dst, const char *restrict org)<br />

3150005 |{<br />

3150006 | size_t i;<br />

3150007 | size_t j;<br />

3150008 | for (i = 0; dst[i] != 0; i++)<br />

3150009 | {<br />

3150010 | ; // Just look for the null character.<br />

3150011 | }<br />

3150012 | for (j = 0; org[j] != 0; i++, j++)<br />

3150013 | {<br />

3150014 | dst[i] = org[j];<br />

3150015 | }<br />

3150016 | dst[i] = 0;<br />

3150017 | return dst;<br />

3150018 |}<br />

105.11.8 lib/string/strchr.c<br />

Si veda la sezione 98.105.<br />

3160001 |#include <br />

3160002 |//----------------------------------------------------------------------<br />

3200001 |#include <br />

3200002 |//----------------------------------------------------------------------<br />

3200003 |size_t<br />

3200004 |strcspn (const char *string, const char *reject)<br />

3200005 |{<br />

3200006 | size_t i;<br />

3200007 | size_t j;<br />

3200008 | int found;<br />

3200009 | for (i = 0; string[i] != 0; i++)<br />

3200010 | {<br />

3200011 | for (j = 0, found = 0; reject[j] != 0 || found; j++)<br />

3200012 | {<br />

3200013 | if (string[i] == reject[j])<br />

3200014 | {<br />

3200015 | found = 1;<br />

3200016 | break;<br />

3200017 | }<br />

3200018 | }<br />

3200019 | if (found)<br />

3200020 | {<br />

3200021 | break;<br />

3200022 | }<br />

3200023 | }<br />

3200024 | return i;<br />

3200025 |}<br />

3160003 |char *<br />

«<br />

«<br />

3160004 |strchr (const char *string, int c)<br />

3160005 |{<br />

3160006 | size_t i;<br />

3160007 | for (i = 0; ; i++)<br />

3160008 | {<br />

3160009 | if (string[i] == (char) c)<br />

3160010 | {<br />

3160011 | return (char *) (string + i);<br />

3160012 | }<br />

3160013 | else if (string[i] == 0)<br />

3160014 | {<br />

3160015 | return NULL;<br />

3160016 | }<br />

3160017 | }<br />

3160018 |}<br />

105.11.9 lib/string/strcmp.c<br />

Si veda la sezione 98.106.<br />

3170001 |#include <br />

3170002 |//----------------------------------------------------------------------<br />

3170003 |int<br />

3170004 |strcmp (const char *string1, const char *string2)<br />

3170005 |{<br />

3170006 | char *a = (char *) string1;<br />

3170007 | char *b = (char *) string2;<br />

3170008 | size_t i;<br />

3170009 | for (i = 0; ; i++)<br />

3170010 | {<br />

3170011 | if (a[i] > b[i])<br />

3170012 | {<br />

3170013 | return 1;<br />

3170014 | }<br />

3170015 | else if (a[i] < b[i])<br />

3170016 | {<br />

3170017 | return -1;<br />

3170018 | }<br />

3170019 | else if (a[i] == 0 && b[i] == 0)<br />

3170020 | {<br />

3170021 | return 0;<br />

3170022 | }<br />

3170023 | }<br />

3170024 |}<br />

105.11.10 lib/string/strcoll.c<br />

Si veda la sezione 98.106.<br />

3180001 |#include <br />

3180002 |//----------------------------------------------------------------------<br />

3180003 |int<br />

3180004 |strcoll (const char *string1, const char *string2)<br />

3180005 |{<br />

3180006 | return (strcmp (string1, string2));<br />

3180007 |}<br />

105.11.13 lib/string/strdup.c<br />

Si veda la sezione 98.110.<br />

3210001 |#include <br />

3210002 |#include <br />

3210003 |#include <br />

3210004 |//----------------------------------------------------------------------<br />

3210005 |char *<br />

3210006 |strdup (const char *string)<br />

3210007 |{<br />

3210008 | size_t size;<br />

3210009 | char *copy;<br />

3210010 | //<br />

3210011 | // Get string size: must be added 1, to count the termination null<br />

3210012 | // character.<br />

3210013 | //<br />

3210014 | size = strlen (string) + 1;<br />

3210015 | //<br />

3210016 | copy = malloc (size);<br />

3210017 | //<br />

3210018 | if (copy == NULL)<br />

3210019 | {<br />

3210020 | errset (ENOMEM); // Not enough memory.<br />

3210021 | return (NULL);<br />

3210022 | }<br />

3210023 | //<br />

3210024 | strcpy (copy, string);<br />

3210025 | //<br />

3210026 | return (copy);<br />

3210027 |}<br />

105.11.14 lib/string/strerror.c<br />

Si veda la sezione 98.111.<br />

3220001 |#include <br />

3220002 |#include <br />

3220003 |//----------------------------------------------------------------------<br />

3220004 |#define ERROR_MAX 100<br />

3220005 |//----------------------------------------------------------------------<br />

3220006 |char *<br />

3220007 |strerror (int errnum)<br />

3220008 |{<br />

3220009 | static char *err[ERROR_MAX];<br />

3220010 | //<br />

3220011 | err[0] = "No error";<br />

3220012 | err[E2BIG] = TEXT_E2BIG;<br />

3220013 | err[EACCES] = TEXT_EACCES;<br />

3220014 | err[EADDRINUSE] = TEXT_EADDRINUSE;<br />

3220015 | err[EADDRNOTAVAIL] = TEXT_EADDRNOTAVAIL;<br />

3220016 | err[EAFNOSUPPORT] = TEXT_EAFNOSUPPORT;<br />

3220017 | err[EAGAIN] = TEXT_EAGAIN;<br />

3220018 | err[EALREADY] = TEXT_EALREADY;<br />

3220019 | err[EBADF] = TEXT_EBADF;<br />

3220020 | err[EBADMSG] = TEXT_EBADMSG;<br />

3220021 | err[EBUSY] = TEXT_EBUSY;<br />

3220022 | err[ECANCELED] = TEXT_ECANCELED;<br />

3220023 | err[ECHILD] = TEXT_ECHILD;<br />

3220024 | err[ECONNABORTED] = TEXT_ECONNABORTED;<br />

3220025 | err[ECONNREFUSED] = TEXT_ECONNREFUSED;<br />

3220026 | err[ECONNRESET] = TEXT_ECONNRESET;<br />

3220027 | err[EDEADLK] = TEXT_EDEADLK;<br />

3220028 | err[EDESTADDRREQ] = TEXT_EDESTADDRREQ;<br />

3220029 | err[EDOM] = TEXT_EDOM;<br />

3220030 | err[EDQUOT] = TEXT_EDQUOT;<br />

«<br />

«

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!