Функция для выделения определенных символов из строки - C (СИ)
Формулировка задачи:
Помогите решить задачу.
//
#include "stdafx.h"
int main(void)
{
char substring(char source[], int start, int count, char result[]);
int str=3,cnt=4;
char finish[4];
substring ("Character", str, cnt, finish);
printf("%s", finish);
return 0;
}
char substring(const char source[], int start, int count, char result)
{
char character;
char res[4];
int i=0,j=start;
while (count!=0)
{
character=source[j];
res[i]=character;
--count;
++i;
++j;
}
return res[4];
}Решение задачи: «Функция для выделения определенных символов из строки»
textual
Листинг программы
char* substring(const char *source, int start, int count, char *result)
Объяснение кода листинга программы
В данном коде представлена функция substring, которая выделяет подстроку из исходной строки. Вот список шагов, которые объясняют, что происходит в коде:
- Входные данные функции
substringпредставлены тремя параметрами:source- указатель на исходную строку.start- начальная позиция подстроки в исходной строке.count- длина подстроки.
- В начале функции
substringпроисходит проверка наличия валидных входных данных:- Проверка на ноль исходной строки (
source). Еслиsourceравно нулю, то функция возвращаетNULL. - Проверка на отрицательную позицию начала подстроки (
start). Еслиstartменьше нуля, то функция возвращаетNULL. - Проверка на выход за границы строки при вычислении длины подстроки. Если
startплюсcountбольше или равно длине исходной строки, то функция возвращаетNULL.
- Проверка на ноль исходной строки (
- Если все проверки прошли успешно, то функция продолжает работу:
- В случае, когда
resultравноNULL, функция выделяет память под новую строку с помощью оператораmalloc. - В противном случае, функция использует уже выделенную память под строку
result.
- В случае, когда
- После этого функция начинает выделять подстроку из исходной строки:
- Переменная
pинициализируется значениемsource. - В цикле, который выполняется
countраз, происходит копирование символов подстроки в строкуresult. - Значение
pувеличивается на единицу после каждой итерации цикла.
- Переменная
- После завершения цикла функция проверяет, была ли выделена память под строку
result. Если это так, то функция возвращает указатель на выделенную память. Если память не была выделена, то функция возвращаетNULL. В итоге, функцияsubstringвозвращает указатель на выделенную память, содержащую подстроку из исходной строки, илиNULL, если произошла ошибка.