Изменение регистра символов в строке - C (СИ)
Формулировка задачи:
Дана строка только из прописных букв. Нужно преобразовать ее так, чтобы первая буква после точки была прописной, а остальные - строчными. Сделал только ввод строки
#include <stdio.h>
int main(int argc, const char * argv[])
{
char s1[20];
fflush(stdin);
printf("vvedite stroky propisnih simvoov: \n");
scanf("%s", &s1[0]);
return 0;
}Решение задачи: «Изменение регистра символов в строке»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
int main( int argc, char** argv)
{
int i=0, j;
char s1[100], *c;
fflush(stdin);
printf("vvedite stroky propisnih simvoov: \n");
fgets(s1, 100, stdin);
s1[0] = toupper(s1[0]);
for (c = s1 + 1; *c; ++c)
*c = tolower(*c);
while(i < 100){
if (s1[i++] == '.')
for (j = i ; j < 100; j++)
if (!isspace(s1[j]))
{
s1[j] = toupper(s1[j]);
break;
}
}
puts(s1);
getchar();
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью и проверки символов на специальные символы.
- Определяем основную функцию программы - main.
- Инициализируем переменные: i=0, j, c, s1.
- Выводим сообщение с просьбой ввести строку.
- Считываем строку с помощью функции fgets.
- Приводим первый символ строки к верхнему регистру с помощью функции toupper.
- В цикле проходим по каждому символу строки (начиная со второго) и приводим его к нижнему регистру с помощью функции tolower.
- В цикле проходим по каждому символу строки (начиная с первого) и если символ является точкой, то в следующем цикле проходим по всем символам начиная с текущего индекса и проверяем каждый символ на специальный символ (не пробел). Если символ не является пробелом, то приводим его к верхнему регистру и выходим из цикла.
- Выводим измененную строку с помощью функции puts.
- Получаем символ конца файла с помощью функции getchar.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.