С++
Реалізувати власні функції для роботи з рядками не використовуючи
стандартні бібліотеки
1. int mystrlen (const char * str); - функція визначає довжину рядка.
2. char * mystrcpy (char * str1, const char * str2); - функція копіює рядок str2 в
буфер, що адресується через str1. Функція повертає покажчик на перший
рядок str1.
3. char * mystrcat (char * str1, const char * str2); - функція приєднує рядок str2 до
рядка str1. Функція повертає покажчик на перший рядок str1.
4. char * mystrchr (char * str, char s); - функція здійснює пошук символу s в рядку
str. Функція повертає покажчик на перше входження символу в рядок, в
іншому випадку 0.
5. char * mystrstr (char * str1, char * str2); - функція здійснює пошук підрядка str2
в рядку str1. Функція повертає покажчик на перше входження підрядка str2 в
рядок str1, в іншому випадку 0.
6. int mystrcmp (const char * str1, const char * str2); - функція порівнює два рядки,
і, якщо рядки рівні повертає 0, якщо перший рядок більше другий, то повертає
1, інакше -1.
7. int StringToNumber (char * str); - функція конвертує рядок в число і повертає
це число.
8. char* NumberToString (int number); - функція конвертує число в рядок і
повертає покажчик на цей рядок.
9. char * Uppercase (char * str1); - функція перетворює рядок у верхній регістр.
10.char * Lowercase (char * str1); - функція перетворює рядок у нижній регістр.
11.char * mystrrev (char * str); - функція реверсує рядок і повертає покажчик на
новий рядок.
Ответы
Ответ:
Код для реалізації функцій у мові С:
1. int mystrlen(const char* str) {
int len = 0;
while (*str++ != '\0') {
len++;
}
return len;
}
2. char* mystrcpy(char* str1, const char* str2) {
char* res = str1;
while ((*str1++ = *str2++) != '\0');
return res;
}
3. char* mystrcat(char *str1, const char *str2) {
char* res = str1;
while (*str1) {
str1++;
}
while (*str2) {
*str1++ = *str2++;
}
*str1 = '\0';
return res;
}
4. char* mystrchr(char* str, char s) {
while (*str != '\0') {
if (*str == s) {
return str;
}
str++;
}
return NULL;
}
5. char* mystrstr(char* str1, char* str2) {
char* res = str1;
while (*res != '\0') {
char* s1 = res;
char* s2 = str2;
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2) {
s1++;
s2++;
}
if (*s2 == '\0') {
return res;
}
res++;
}
return NULL;
}
6. int mystrcmp(const char* str1, const char* str2) {
while (*str1 == *str2) {
if (*str1 == '\0') {
return 0;
}
str1++;
str2++;
}
if (*str1 > *str2) {
return 1;
}
else {
return -1;
}
}
7. int StringToNumber(char* str) {
int res = 0;
while (*str != '\0') {
res *= 10;
res += *str - '0';
str++;
}
return res;
}
8. char* NumberToString(int number) {
static char str[15]; //мінімальна довжина рядка для INT_MAX + '\0'
int i = 0;
if (number < 0) {
str[i++] = '-';
number = -number;
}
int p = 1;
while (p <= number) {
p *= 10;
}
p /= 10;
while (p != 0) {
str[i++] = number / p + '0';
number %= p;
p /= 10;
}
str[i] = '\0';
return str;
}
9. char* Uppercase(char* str) {
char* res = str;
while (*str != '\0') {
if (*str >= 'a' && *str <= 'z') {
*str -= 32;
}
str++;
}
return res;
}
10. char* Lowercase(char* str) {
char* res = str;
while (*str != '\0') {
if(*str >= 'A' && *str <= 'Z') {
*str += 'a' - 'A';
}
str++;
}
return res;
}
11. char* mystrrev(char* str) {
int len = mystrlen(str);
char* res = (char*)malloc(len + 1);
for (int i = 0; i < len; i++) {
res[i] = str[len - i - 1];
}
res[len] = '\0';
return res;
}
Код для реалізації функцій у мові C++:
1. int mystrlen(const char* str) {
int len = 0;
while (*str++ != '\0') {
len++;
}
return len;
Объяснение: