Написать свои функции работы со строками аналогичные функциям из - C (СИ)

Узнай цену своей работы

Формулировка задачи:

надо было написать свои функции работы со строками аналогичные функциям из <string.h> проверьте, пожалуйста:
#include <stdio.h>
 
size_t mstrlen(const char *str)
{   
    size_t res = 0;
    while(*str++)
        res++;
    return res;
}
 
char * mstrset(char *str, int c)
{
    char *res = str;
    while(*str) *str++ = c;
    *str = '\0';
    return res;
}
 
char * mstrnset(char *str, int c, unsigned int n)
{
    size_t i;
    char *res = str;
    if (n > mstrlen(str)) n = mstrlen(str);
 
    for(i = 0; i < n; i++)
        *str++ = c;
    return res;
}
 
char * mstrcpy(char *dst, const char *src)
{
    char *res = dst;
    while(*src) *dst++ = *src++;
    *dst = '\0';
    return res; 
}
 
char * mstrcat(char *str1, const char *str2)
{
    char *res = str1;
    while(*++str1);
    while(*str2) *str1++ = *str2++;
    *str1 = '\0';
    return res;
}
 
int mstrcmp(const char *str1, const char *str2)
{
    while(*str1 && *str2)
    {
        if (*str1 != *str2)
        {
            if (*str1 > *str2) 
                return 1;
            else
                return -1;
        }
        *str1++;
        *str2++;
    }
    return 0;
}
 
const char * mstrchr(const char *str, int ch)
{
    while(*str)
        if (*++str == ch) return str;
    return NULL;
}
 
const char * mstrpbrk(const char *str1, const char *str2)
{
    const char *res = str1, *rest , *t;
    size_t i;
    while(*++res);
    rest = res;
    for(i = 0; i < mstrlen(str2); i++)
    {
        t = mstrchr(str1, str2[i]);
        if (t && t <= res) res = t;
    }
    if (res != rest) 
        return res;
    else
        return NULL;
}
 
size_t mstrspn(const char *str1, const char *str2)
{
    size_t i, j, f;
    for(i = 0; i < mstrlen(str1); i++)
    {
        f = 0;
        for(j = 0; j < mstrlen(str2); j++)
        {
            if (str1[i] != str2[j]) f++;
        }
        if (f == mstrlen(str2)) return i;
    }
    return mstrlen(str1);
}
 
const char * mstrstr(const char *str1, const char *str2)
{
    size_t i, j, f;
    for(i = 0; i < mstrlen(str1) - mstrlen(str2) + 1; i++)
    {
        f = 0;
        for(j = 0; j < mstrlen(str2); j++)
        {
            if (str1[i + j] == str2[j]) f++;
        }
        if (f == mstrlen(str2)) return str1 + i;
    }
    if (mstrlen(str2))
        return NULL;
    else 
        return str1;
}
 
int main(void)
{
    char str1[20]="abc";
    printf("%s", mstrcat(str1, "12345"));
    getchar(); 
    return 0;
}
какие есть ошибки, замечания? не разобрался с функцией strtok(), чет не получилось даже просто использовать её..

Решение задачи: «Написать свои функции работы со строками аналогичные функциям из »

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char line[100] = "abcd";
 
    strset(line, 'c');
    return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Объявляем переменную типа char с именем line и размером 100 байт
  3. Инициализируем переменную line строкой abcd
  4. Вызываем функцию strset для установки всех символов в строке на символ 'c'
  5. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5
Похожие ответы