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 />
«