Створити бібліотеку таких функцій:
■ int mystrlen(const char * str); — функція визначає дов-жину рядка.
■ char * mystrcpy (char * str1, const char * str2); — функція копіює рядок str2 у буфер, що адресується через str1. Функція повертає покажчик на перший рядок str1.
■ char * mystrcat (char * str1, const char * str2); — функція приєднує рядок str2 до рядка str1. Функція повертає покажчик на перший рядок str1.
■ char * mystrchr (char * str, char s); — функція здійснює пошук символа s у рядку str. Функція повертає покаж-чик на перше входження символу в рядок, в іншому випадку — 0.
■ char * mystrstr (char * str1, char * str2); — функція здійснює пошук підрядка str2 у рядку str1. Функція повертає покажчик на перше входження підрядка str2в рядок str1, в іншому випадку — 0.
Answers & Comments
#include
// Функція визначає довжину рядка
int mystrlen(const char *str) {
int len = 0;
while (*str != '\0') {
len++;
str++;
}
return len;
}
// Функція копіює рядок str2 у буфер, що адресується через str1
// Повертає покажчик на перший рядок str1
char *mystrcpy(char *str1, const char *str2) {
char *ptr = str1;
while (*str2 != '\0') {
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return ptr;
}
// Функція приєднує рядок str2 до рядка str1
// Повертає покажчик на перший рядок str1
char *mystrcat(char *str1, const char *str2) {
char *ptr = str1;
while (*str1 != '\0') {
str1++;
}
while (*str2 != '\0') {
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return ptr;
}
// Функція здійснює пошук символа s у рядку str
// Повертає покажчик на перше входження символу в рядок,
// в іншому випадку — 0.
char *mystrchr(char *str, char s) {
while (*str != '\0') {
if (*str == s) {
return str;
}
str++;
}
if (*str == s) {
return str;
}
return NULL;
}
// Функція здійснює пошук підрядка str2 у рядку str1
// Повертає покажчик на перше входження підрядка str2
// в рядок str1, в іншому випадку — 0.
char *mystrstr(char *str1, char *str2) {
int len1 = mystrlen(str1);
int len2 = mystrlen(str2);
int i, j;
for (i = 0; i <= len1 - len2; i++) {
for (j = 0; j < len2; j++) {
if (str1[i + j] != str2[j]) {
break;
}
}
if (j == len2) {
return &str1[i];
}
}
return NULL;
}
Ці функції можна використовувати у програмі таким чином:
#include
#include
int main() {
char str1[100], str2[100];
char s;
// Використання функці