
Вопрос задан 07.06.2023 в 07:41.
Предмет Информатика.
Спрашивает Васильева Мария.
Створити бібліотеку таких функцій: ■ 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.

Ответы на вопрос

Отвечает Тумасян Джессика.
Ось бібліотека, що містить вказані функції: #include
#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;
// Використання функці
#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;
// Використання функці



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Ось приклад бібліотеки з вказаними функціями:
c#include <stdlib.h>
int mystrlen(const char *str) {
int length = 0;
while (*str != '\0') {
length++;
str++;
}
return length;
}
char *mystrcpy(char *str1, const char *str2) {
char *original = str1;
while (*str2 != '\0') {
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return original;
}
char *mystrcat(char *str1, const char *str2) {
char *original = str1;
while (*str1 != '\0') {
str1++;
}
while (*str2 != '\0') {
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return original;
}
char *mystrchr(char *str, char s) {
while (*str != '\0') {
if (*str == s) {
return str;
}
str++;
}
return NULL;
}
char *mystrstr(char *str1, char *str2) {
while (*str1 != '\0') {
char *start1 = str1;
char *start2 = str2;
while (*start1 == *start2 && *start2 != '\0') {
start1++;
start2++;
}
if (*start2 == '\0') {
return str1;
}
str1++;
}
return NULL;
}
Це простий приклад реалізації вказаних функцій. Зверніть увагу, що ця реалізація не включає перевірку на NULL аргументів та інші додаткові перевірки помилок. В реальному коді бажано додати такі перевірки для безпеки та надійності програми.


Топ вопросов за вчера в категории Информатика

Информатика 558

Информатика 33

Информатика 74

Информатика 12

Информатика 10

Информатика 33

Информатика 27
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili