Использование библиотечных функций для работы с символьными данными - 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();
};

Объяснение кода листинга программы

  1. Включаются необходимые библиотеки
  2. Создаются и инициализируются переменные:
    • s - указатель на выделенную память для строки
    • p - указатель на выделенную память для подстрок
    • q - указатель на временную переменную для поиска подстроки
    • jx - переменная для хранения индекса подстроки
    • cnt - счетчик количества найденных подстрок
  3. Выводится сообщение с приглашением ввести строку
  4. Вводится строка с помощью функции gets(s)
  5. Выделяется память под строку p с запасом в 10 символов
  6. Первый символ строки p устанавливается в ноль
  7. В цикле while происходит поиск подстроки й в строке s
    • переменная jx хранит разницу между адресами начала подстроки и строки
    • с помощью функции strncat(p,s,jx+1) к строке p добавляется подстрока s, начиная с позиции jx
    • с помощью функции strcat(p,,) к строке p добавляется запятая и пробел
    • s = s +jx+2 - смещается указатель на строку s, чтобы пропустить найденную подстроку
    • cnt увеличивается на единицу
  8. После выхода из цикла, к строке p добавляется оставшаяся часть строки s
  9. Выводится сообщение с количеством найденных подстрок и итоговой строкой p
  10. Ожидается нажатие клавиши с помощью функции getch()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы