Написать свои функции работы со строками аналогичные функциям из - C (СИ)
Формулировка задачи:
надо было написать свои функции работы со строками аналогичные функциям из <string.h>
проверьте, пожалуйста:
какие есть ошибки, замечания?
не разобрался с функцией strtok(), чет не получилось даже просто использовать её..
Листинг программы
- #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;
- }
Решение задачи: «Написать свои функции работы со строками аналогичные функциям из »
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- int main(void)
- {
- char line[100] = "abcd";
- strset(line, 'c');
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем переменную типа char с именем line и размером 100 байт
- Инициализируем переменную line строкой
abcd
- Вызываем функцию strset для установки всех символов в строке на символ 'c'
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д