Использование библиотечных функций для работы с символьными данными - 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()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д