Отредактировать текст так, чтобы предложения в тексте разделялись ровно двумя пробелами - C (СИ)
Формулировка задачи:
Дан произвольный текст. Отредактировать текст так, чтобы
а) между словами был ровно один пробел
б)предложения в тексте разделялись ровно двумя пробелами
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
int i,l,j;
char str[100],str1[150];
puts("\n Vvedite stroky: ");
gets(str);
l=strlen(str);
j=0;
for(i=0;i<l;i++)
{
str1[j]=str[i];
if(str[i]==' ' && str[i]==' ')
{
i++;
}
if(str[i]=='.'||str[i]=='!'||str[i]=='?')
{
j++;
str1[j]=' ';
j++;
}
j++;
}
l=strlen(str1);
for(i=0;i<l;i++)
printf("%c",str1[i]);
}Решение задачи: «Отредактировать текст так, чтобы предложения в тексте разделялись ровно двумя пробелами»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define SEC_ENDS ".!?"
#define DELIMS " \t\n"
int main(void){
char buf[BUFSIZ], * p;
while ( printf("\nString: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
for ( p = strtok(buf, DELIMS); p; p = strtok(NULL, DELIMS) )
printf("%s%s", p, ( strchr(SEC_ENDS, p[strlen(p) - 1]) ) ? " " : " ");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
и . - Определение двух констант: SEC_ENDS (конец строки) и DELIMS (разделитель).
- Объявление переменных: buf (буфер для ввода строки) и p (указатель на текущий токен).
- Вход в цикл while, который будет выполняться до тех пор, пока пользователь не введет пустую строку.
- Внутри цикла запрашивается строка у пользователя с помощью функции fgets.
- Далее начинается внутренний цикл for, который будет выполняться для каждого токена в строке.
- В каждой итерации внутреннего цикла выводится текущий токен.
- Если последний символ текущего токена совпадает с одним из символов, указанных в константе SEC_ENDS, то выводится
(два пробела). - Если последний символ текущего токена не совпадает ни с одним из символов, указанных в константе SEC_ENDS, то выводится
(один пробел). - В конце программы возвращается 0, что означает успешное завершение работы программы.