Использование библиотечных функций для работы с символьными данными - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужна помощь, не знаю как переделать эту программу полностью на библиотечные функции типа :strcpy() strchr() и прочих. Не меняя суть работы программы.
Листинг программы
  1. /*Ввести с клавиатуры предложение.
  2. Произвести вставку запятой после слов заканчивающихся на "й".
  3. Вывести на экран количество таких вставок.*/
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <conio.h>
  8. int main ()
  9. {
  10. char S1[100]; char S2[100];
  11. int i=0,j=0,k=0;
  12. printf("\n Vvedite slova: ");
  13. gets(S1);
  14. while (S1[i]!='\0')
  15. {
  16. S2[j++]=S1[i++];
  17. if ((S1[i-1]=='i')&&(S1[i]==' ')){
  18. S2[j++]=',';
  19. k++;
  20. }
  21. }
  22. S2[j]='\0';
  23. printf("\n %s",S2);
  24. printf("\n %d",k);
  25. gets(S2);
  26. }

Решение задачи: «Использование библиотечных функций для работы с символьными данными»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5.  
  6. void main()
  7.   {
  8. char *s = malloc(80), *p,*q;
  9. int jx, cnt = 0;
  10. cputs("Enter string:");
  11. gets(s);
  12. p = malloc(strlen(s)+10);
  13. p[0]=0;
  14. while(q = strstr(s,"й "))
  15. { jx = q - s;
  16. strncat(p,s,jx+1);
  17. strcat(p,", ");
  18. s = s +jx+2;
  19. cnt++;};
  20. strcat(p,s);
  21. printf("inserted:%d: %s",cnt,p);
  22. getch();
  23. };

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы