Использование библиотечных функций для работы с символьными данными - C (СИ)
Формулировка задачи:
Нужна помощь, не знаю как переделать эту программу полностью на библиотечные функции типа :strcpy() strchr() и прочих. Не меняя суть работы программы.
/*Ввести с клавиатуры предложение. Произвести вставку запятой после слов заканчивающихся на "й". Вывести на экран количество таких вставок.*/ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> int main () { char S1[100]; char S2[100]; int i=0,j=0,k=0; printf("\n Vvedite slova: "); gets(S1); while (S1[i]!='\0') { S2[j++]=S1[i++]; if ((S1[i-1]=='i')&&(S1[i]==' ')){ S2[j++]=','; k++; } } S2[j]='\0'; printf("\n %s",S2); printf("\n %d",k); gets(S2); }
Решение задачи: «Использование библиотечных функций для работы с символьными данными»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <string.h> #include <malloc.h> void main() { char *s = malloc(80), *p,*q; int jx, cnt = 0; cputs("Enter string:"); gets(s); p = malloc(strlen(s)+10); p[0]=0; while(q = strstr(s,"й ")) { jx = q - s; strncat(p,s,jx+1); strcat(p,", "); s = s +jx+2; cnt++;}; strcat(p,s); printf("inserted:%d: %s",cnt,p); getch(); };
Объяснение кода листинга программы
- Включаются необходимые библиотеки
- Создаются и инициализируются переменные:
- s - указатель на выделенную память для строки
- p - указатель на выделенную память для подстрок
- q - указатель на временную переменную для поиска подстроки
- jx - переменная для хранения индекса подстроки
- cnt - счетчик количества найденных подстрок
- Выводится сообщение с приглашением ввести строку
- Вводится строка с помощью функции gets(s)
- Выделяется память под строку p с запасом в 10 символов
- Первый символ строки p устанавливается в ноль
- В цикле while происходит поиск подстроки
й
в строке s- переменная jx хранит разницу между адресами начала подстроки и строки
- с помощью функции strncat(p,s,jx+1) к строке p добавляется подстрока s, начиная с позиции jx
- с помощью функции strcat(p,
,
) к строке p добавляется запятая и пробел - s = s +jx+2 - смещается указатель на строку s, чтобы пропустить найденную подстроку
- cnt увеличивается на единицу
- После выхода из цикла, к строке p добавляется оставшаяся часть строки s
- Выводится сообщение с количеством найденных подстрок и итоговой строкой p
- Ожидается нажатие клавиши с помощью функции getch()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д