Funkcje nagłówkowe string.h
1. Strcpy:
char *strcpy(char *dest, const char *src)
{
char* p=dest;
while (*dest++ = *src++);
return p;
}
2. Strncpy:
char* strncpy(char *s1, const char *s2, int n)
{
char* result = s1;
int num = 0;
while ((*s1++ = *s2++) && (++num < n-1));
*s1++ = '\0';
return result;
}
3. Strcat:
char *strcat(char *dest, const char *src)
{
char* p=dest;
while (*dest) dest++; /* przejdź na koniec łańcucha docelowego */
while (*dest++ = *src++); /* dołącz łańcuch źródłowy */
return p;
}
4. Strncat:
char* strncat(char *s1, const char *s2, int n)
{
int num = 0;
char *wsk = s1;
while (*s1) s1++;
while ((*s1++ = *s2++) && (++num < n));
return wsk;
}
5. Strchr:
char *strchr(const char *s, int c)
{
char* temp = (char*)s;
while (*temp && *temp != c) temp++;
if (*temp == '\0')
return NULL;
return temp;
}
6. Strrchr:
char *strrchr(const char *s, int c)
{
char* result = NULL;
while (*s)
{
if (*s == c)
result = (char*)s;
s++;
}
return result;
}
7. Strcmp:
int strcmp(const char *s1, const char*s2)
{
while ((*s1) && (*s2) && (*s1==*s2)) s1++, s2++;
return (int)*s1-(int)*s2;
}
8. Strncmp:
int strncmp(const char *s1, const char *s2, int n)
{
int num = 0;
while ((*s1) && (*s2) && (*s1==*s2) && (++num < n)) s1++, s2++;
return (int)*s1-(int)*s2;
}
9. Strspn:
int strspn(const char *s, const char *set)
{
int pos = 0;
char *temp;
while (*s)
{
temp = (char*)set;
while (*temp) {
if (*s == *temp) break;
temp++;
}
if (*temp == '\0')
break;
s++;
pos++;
}
return pos;
}
10. Strcspn:
int strcspn(const char *s, const char *set)
{
int pos = 0;
char *temp;
while (*s) /* przetwarzaj wszystkie znaki łańcucha */
{
temp = (char*)set;
while (*temp) /* porównaj każdy znak ze zbioru z bieżącym znakiem */
if (*s == *temp) return pos; /* zwróć indeks bieżącego znaku gdy należy on do zbioru
else temp++;
s++;
pos++;
}
return pos;
}
11. Strlen:
int strlen(const char* string)
{
int len = 0;
while (*string++) len++;
return len;
}
12. Strpbrk:
char* strpbrk(const char *s, const char *set)
{
char *temp;
while (*s)
{
temp = (char*)set;
while (*temp)
if (*s == *temp) return (char*)s;
else temp++;
s++;
}
return NULL;
}
13. Memcpy:
void* memcpy(void* dest, const void* src, int count) {
char* idest = (char*)dest;
char* isrc = (char*)src;
while (count--) {
*idest++ = *isrc++;
}
return dest;
}
14. Memmove:
void* memmove(void* dest, const void* src, int count) {
char* idest = (char*)dest;
char* isrc = (char*)src;
int i;
char temp[count];
for (i=0; i<count ;i++) {
temp[i] = *isrc++;
}
for (i=0; i<count ;i++) {
*idest++ = temp[i];
}
return dest;
}
15. Memset:
void* memset( void * src, int value, int count ) {
char* isrc = (char*)src;
while (count--) {
*isrc++ = value;
}
return src;
}
16. Strstr:
char* my_strstr(char* s, char* s1)
{
if ((*s1 == '\0') || (*s == '\0'))
return NULL;
while (*s)
{
char* temp1 = s;
char* temp2 = s1;
while (*temp1 == *temp2 && *temp1 && *temp2)
temp1++, temp2++;
if (*temp2 == '\0')
return s;
else
if (*temp1 == '\0')
return NULL;
s++;
}
}
17. strdup: //Zwraca wskaźnik do nowego łańcucha, który stanowi kopię.
char* strdup(const char* src)
{
char* dest = (char*)malloc(strlen(src)+1);
return strcpy(dest, src);
}
Funkcje nagłówkowe ctype.h
int isalnum(int a) //sprawdza czy znak jest liczbą lub literą
{
if(a=='a'||a=='A'||a=='b'||a=='B'||a=='c'||a=='C'||a=='d'||a=='D'||a=='e'||a=='E'||a=='f'||a=='F'||a=='g'||a=='G'||a=='h'||a=='H'||a=='i'||a=='I'||a=='j'||a=='J'||a=='k'||a=='K'||a=='l'||a=='L'||a=='m'||a=='M'||a=='n'||a=='N'||a=='o'||a=='O'||a=='p'||a=='P'||a=='q'||a=='Q'||a=='r'||a=='R'||a=='s'||a=='S'||a=='t'||a=='T'||a=='u'||a=='U'||a=='v'||a=='V'||a=='w'||a=='W'||a=='x'||a=='X'||a=='y'||a=='Y'||a=='z'||a=='Z'||a=='1'||a=='2'||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='0')
{
return 1;
}
else return 0;
}
int isalpha(int a) //sprawdza czy znak jest literą
{
if(a=='a'||a=='A'||a=='b'||a=='B'||a=='c'||a=='C'||a=='d'||a=='D'||a=='e'||a=='E'||a=='f'||a=='F'||a=='g'||a=='G'||a=='h'||a=='H'||a=='i'||a=='I'||a=='j'||a=='J'||a=='k'||a=='K'||a=='l'||a=='L'||a=='m'||a=='M'||a=='n'||a=='N'||a=='o'||a=='O'||a=='p'||a=='P'||a=='q'||a=='Q'||a=='r'||a=='R'||a=='s'||a=='S'||a=='t'||a=='T'||a=='u'||a=='U'||a=='v'||a=='V'||a=='w'||a=='W'||a=='x'||a=='X'||a=='y'||a=='Y'||a=='z'||a=='Z')
{
return 1;
}
else return 0;
}
int iblank(int a) //sprawdza czy znak jest znakiem odstępu służącym do oddzielania wyrazów (standardowymi znakami odstępu są spacja i znak tabulacji)
{
if(a==' '||a=='\t')
{
return 1;
}
else return 0;
}
int iscntrl(int a) //sprawdza czy znak jest znakiem sterującym
{
if(a=='\n'||a=='\t'||a=='\f'||a=='\v'||a=='\r')
{
return 1;
}
else return 0;
}
int isdigit(int a) //sprawdza czy znak jest cyfrą dziesiętna
{
if(a=='1'||a=='2'||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='0')
{
return 1;
}
else return 0;
}
int isgraph(int a) //sprawdza czy znak jest znakiem drukowalnym różnym od spacji
{
if(a=='a'||a=='A'||a=='b'||a=='B'||a=='c'||a=='C'||a=='d'||a=='D'||a=='e'||a=='E'||a=='f'||a=='F'||a=='g'||a=='G'||a=='h'||a=='H'||a=='i'||a=='I'||a=='j'||a=='J'||a=='k'||a=='K'||a=='l'||a=='L'||a=='m'||a=='M'||a=='n'||a=='N'||a=='o'||a=='O'||a=='p'||a=='P'||a=='q'||a=='Q'||a=='r'||a=='R'||a=='s'||a=='S'||a=='t'||a=='T'||a=='u'||a=='U'||a=='v'||a=='V'||a=='w'||a=='W'||a=='x'||a=='X'||a=='y'||a=='Y'||a=='z'||a=='Z'||a=='1'||a=='2'||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='0'||a=='`'||a=='~'||a=='@'||a=='!'||a=='#'||a=='$'||a=='%'||a=='^'||a=='&'||a=='*'||a=='('||a==')'||a=='-'||a=='_'||a=='='||a=='+'||a=='{'||a=='['||a=='}'||a==']'||a=='\\'||a=='||'||a==';'||a==':'||a==','||a=='<'||a=='.'||a=='>'||a=='/'||a=='?')
{
return 1;
}
else return 0;
}
int islower(int a) //sprawdza czy znak jest małą literą
{
if(a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f'||a=='g'||a=='h'||a=='i'||a=='j'||a=='k'||a=='l'||a=='m'||a=='n'||a=='o'||a=='p'||a=='q'||a=='r'||a=='s'||a=='t'||a=='u'||a=='v'||a=='w'||a=='x'||a=='y'||a=='z')
{
return 1;
}
else return 0;
}
int isprint(int a) //sprawdza czy znak jest znakiem drukowalnym (włączając w to spację)
{
if(a=='a'||a=='A'||a=='b'||a=='B'||a=='c'||a=='C'||a=='d'||a=='D'||a=='e'||a=='E'||a=='f'||a=='F'||a=='g'||a=='G'||a=='h'||a=='H'||a=='i'||a=='I'||a=='j'||a=='J'||a=='k'||a=='K'||a=='l'||a=='L'||a=='m'||a=='M'||a=='n'||a=='N'||a=='o'||a=='O'||a=='p'||a=='P'||a=='q'||a=='Q'||a=='r'||a=='R'||a=='s'||a=='S'||a=='t'||a=='T'||a=='u'||a=='U'||a=='v'||a=='V'||a=='w'||a=='W'||a=='x'||a=='X'||a=='y'||a=='Y'||a=='z'||a=='Z'||a=='1'||a=='2'||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='0'||a=='`'||a=='~'||a=='@'||a=='!'||a=='#'||a=='$'||a=='%'||a=='^'||a=='&'||a=='*'||a=='('||a==')'||a=='-'||a=='_'||a=='='||a=='+'||a=='{'||a=='['||a=='}'||a==']'||a=='\\'||a=='||'||a==';'||a==':'||a==','||a=='<'||a=='.'||a=='>'||a=='/'||a=='?'||a==' ')
{
return 1;
}
else return 0;
}
int ispunct(int a) //sprawdza czy znak jest znakiem przestankowym, dla którego ani isspace ani isalnum nie są prawdziwe (standardowo są to wszystkie znaki drukowalne, dla których te funkcje zwracają zero)
{
if(a=='`'||a=='~'||a=='@'||a=='!'||a=='#'||a=='$'||a=='%'||a=='^'||a=='&'||a=='*'||a=='('||a==')'||a=='-'||a=='_'||a=='='||a=='+'||a=='{'||a=='['||a=='}'||a==']'||a=='\\'||a=='||'||a==';'||a==':'||a==','||a=='<'||a=='.'||a=='>'||a=='/'||a=='?')
{
return 1;
}
else return 0;
}
int isspace(int a) //sprawdza czy znak jest tzw. białym znakiem (standardowymi białymi znakami są: spacja, wysunięcie strony '\f', znak przejścia do nowej linii '\n', znak powrotu karetki '\r', tabulacja pozioma '\t' i tabulacja pionowa '\v')
{
if(a==' '|| a=='\n'||a=='\t'||a=='\f'||a=='\v'||a=='\r')
{
return 1;
}
else return 0;
}
int isupper(int a) //sprawdza czy znak jest dużą literą
{
if(a=='A'||a=='B'||a=='C'||a=='D'||a=='E'||a=='F'||a=='G'||a=='H'||a=='I'||a=='J'||a=='K'||a=='L'||a=='M'||a=='N'||a=='O'||a=='P'|a=='Q'||a=='R'||a=='S'||a=='T'||a=='U'||a=='V'||a=='W'||a=='X'||a=='Y'||a=='Z')
{
return 1;
}
else return 0;
}
int isxdigit(int a) //sprawdza czy znak jest cyfrą szesnastkową, tj. cyfrą dziesiętną lub literą od 'a' do 'f' niezależnie od wielkości
{
if(a=='a'||a=='A'||a=='b'||a=='B'||a=='c'||a=='C'||a=='d'||a=='D'||a=='e'||a=='E'||a=='f'||a=='F'||a=='1'||a=='2'||a=='3'||a=='4'||a=='5'||a=='6'||a=='7'||a=='8'||a=='9'||a=='0')
{
return 1;
}
else return 0;
}
int tolower(int a) //zamienia znak na mala litere
{
if(a=='A') return 'a';
else if(a=='B') return 'b';
else if(a=='C') return 'c';
else if(a=='D') return 'd';
else if(a=='E') return 'e';
else if(a=='F') return 'f';
else if(a=='G') return 'g';
else if(a=='H') return 'h';
else if(a=='I') return 'i';
else if(a=='J') return 'j';
else if(a=='K') return 'k';
else if(a=='L') return 'l';
else if(a=='M') return 'm';
else if(a=='N') return 'n';
else if(a=='O') return 'o';
else if(a=='P') return 'p';
else if(a=='Q') return 'q';
else if(a=='R') return 'r';
else if(a=='S') return 's';
else if(a=='T') return 't';
else if(a=='U') return 'u';
else if(a=='V') return 'v';
else if(a=='W') return 'w';
else if(a=='X') return 'x';
else if(a=='Y') return 'y';
else if(a=='Z') return 'z';
else return a;
}
int toupper(int a) //zamienia znak na duza litere
{
if(a=='a') return 'A';
else if(a=='b') return 'B';
else if(a=='c') return 'C';
else if(a=='d') return 'D';
else if(a=='e') return 'E';
else if(a=='f') return 'F';
else if(a=='g') return 'G';
else if(a=='h') return 'H';
else if(a=='i') return 'I';
else if(a=='j') return 'J';
else if(a=='k') return 'K';
else if(a=='l') return 'L';
else if(a=='m') return 'M';
else if(a=='n') return 'N';
else if(a=='o') return 'O';
else if(a=='p') return 'P';
else if(a=='q') return 'Q';
else if(a=='r') return 'R';
else if(a=='s') return 'S';
else if(a=='t') return 'T';
else if(a=='u') return 'U';
else if(a=='v') return 'V';
else if(a=='w') return 'W';
else if(a=='x') return 'X';
else if(a=='y') return 'Y';
else if(a=='z') return 'Z';
else return a;
}