Заменить первую последовательность символов 'т.ч.' на 'так что' и вывести новую строку - C (СИ)
Формулировка задачи:
Пожалуйста, помогите составить программу в Borland C 3.1:
Дана символьная строка. Заменить первую последовательность символов 'т.ч.' на 'так что' и вывести новую строку. Если искомой последовательности в строке нет, то вывести соответствующее сообщение.
Решение задачи: «Заменить первую последовательность символов 'т.ч.' на 'так что' и вывести новую строку»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main() {
int l, i;
char s[] = "Должно быть еще умение, т.ч. желания недостаточно.";
// char s[] = "Здесь нет ничего невозможного.";
char p[] = "т.ч.";
char k[] = "так что";
char *buf;
l=strlen(s);
for(i=0; i<l-4; i++) {
if(!strncmp(s+i, p, 4)) {
buf=malloc(strlen(s)+strlen(k)-strlen(p)+1);
strncpy(buf, s, i);
strcat(buf, k);
strcat(buf, s+i+strlen(p));
printf("%s\n", buf);
free(buf);
return 0;
}
}
printf("Не найдено\n");
return 1;
}
Объяснение кода листинга программы
В этом коде заменяется первая последовательность символов 'т.ч.' на 'так что' и выводится новая строка. Вот список действий, которые выполняются в этом коде:
- Указываются необходимые для работы функции и подключаются необходимые заголовочные файлы.
- Объявляются переменные:
int l,int i- для цикла;char s[]- исходная строка;char p[]- последовательность символов, которую необходимо заменить;char k[]- последовательность символов, на которую необходимо заменить;char *buf- для хранения результата.
- Вычисляется длина строки
sс помощью функцииstrlen(). - В цикле
forпроисходит сравнение последовательности символовs+iсp. Если они совпадают, то выполняются следующие действия:- Выделяется память под новую строку с помощью функции
malloc(). - Копируются символы до первого вхождения последовательности 'т.ч.' с помощью функции
strncpy(). - С помощью функции
strcat()к новой строке добавляется последовательность 'так что'. - К новой строке добавляются оставшиеся символы исходной строки после последовательности 'т.ч.' с помощью функции
strcat(). - Выводится новая строка с помощью функции
printf(). - Освобождается память с помощью функции
free(). - Возвращается 0.
- Выделяется память под новую строку с помощью функции
- Если в цикле не было найдено ни одной последовательности 'т.ч.', то выводится сообщение
Не найденос помощью функцииprintf(). - Возвращается 1.