Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
// Упражнение на работу со строками
// --------------------------------
// Требуется написать несколько функций для работы со строками C
// и тестовую программу, иллюстрирующую их работу.
// Заготовки для функций с пояснениями, что они должны делать
// приведены ниже.
#include <stddef.h> // В этом заголовочном файле определено значение NULL
#include <iostream>
using namespace std;
// Функция my_strlen должна возвращать длину строки, указатель
// на начало которой передается в нее в качестве параметра.
// Длина строки определяется как число отличных от нуля
// последовательных символов начиная с символа, адресуемого
// указателем - аргументом функции.
int my_strlen(char *s)
{
int i=0;;
while (s[i]!=0)
{
i++;
}
return i;
}
// Функция my_strcpy должна копировать строку, начинающуюся
// с позиции, адресуемой указателем source (2-м параметром),
// в область памяти, начинающуюся с позиции, адресуемой указателем
// target (1-м параметром). Возвращать функция должна указатель
// на позицию, в которую осуществляется копирование.
char *my_strcpy(char *target, char *source)
{
int i=0;
while (source[i]!=0)
{
*(target+i)=source[i];
i++;
}
return target;
}
// Функция my_strstr должна осуществлять поиск подстроки, задаваемой
// указателем pattern (2-м параметром)в строке, задаваемой указателем
// string (1-м параметром). Должна возвращать указатель на позицию,
// соотвтствующую первому появлению подстроки pattern в строке string.
// В случае, если заданная подстрока в строке не обнаруживается,
// должно возвращаться значение NULL.
char *my_strstr(char *string, char *pattern)
{
int sum;
char* result=NULL;
bool flag=true;
int i=0;
while((string[i]!=0) && (flag))
{
sum=0;
for(int j=0;j<my_strlen(pattern);++j)
{
if (string[i+j]==pattern[j]) sum+=1;
if ((sum==my_strlen(pattern)) && (flag))
{
result=&string[i+j-my_strlen(pattern)+1];
flag=false;
}
}
i++;
}
return result;
}
// Функция main() должна проиллюстрировать работу написанных функций
int main()
{
char a=NULL;
char* target1=&a;
char string1[20]="Shipitko Oleg";
char string2[30]="i like dogs.dogs like me.";
char string3[20]="dogs";
cout<<my_strlen(string1)<<endl<<my_strcpy(string1,target1)<<endl<<my_strstr(string2,string3);
return 0;
}