Написать свои функции работы со строками аналогичные функциям из - 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, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д