Верхний и нижний регистр
Мне нужно сделать программу, где я могу вставить строку со словами, и программа сделает все слова, как первое (верхние строчные).
Пример:
Вставить строку - Зал славы AbbA
и результат программы должен быть: - AbbA HalL FamEee ClaSs
Как я могу проверить полное слово и узнать, какие символы есть - верхний или нижний? А потом составьте все слова по одной схеме.
2 ответа
[Комментарий] Создайте логический массив и запишите информацию о верхнем / нижнем регистре каждого символа первого слова. Используя тот же логический массив, отформатируйте оставшиеся слова. Это все, чем я могу вам сейчас помочь. Вы можете попробовать написать программу и вернуться на форум, чтобы получить больше откликов. Поскольку я не имею права оставлять комментарии, я добавляю свой комментарий в раздел ответов.
[Ответ] Вот, пожалуйста...
#include <stdio.h>
#include <string.h>
int main() {
char inputStr[] = "AbbA hall fameee class";
char bool_arr[50];
char *ptr;
int len = 0;
int loopcnt = 0;
int i = 0;
printf("Input Str: %s\n", inputStr);
ptr = strtok(inputStr, " ");
len = strlen(ptr);
for(i = 0; i < len; i++) {
if(toupper(ptr[i]) != ptr[i]) {
bool_arr[i] = 0; //Lower case
}
else {
bool_arr[i] = 1; //Upper case
}
}
while(ptr != NULL) {
if(strlen(ptr) < len) {
loopcnt = strlen(ptr);
}
else {
loopcnt = len;
}
for(i = 0; i < loopcnt; i++) {
if(bool_arr[i] == 0 &&
(tolower(ptr[i]) != ptr[i])) {
ptr[i] = tolower(ptr[i]);
}
if(bool_arr[i] == 1 &&
(toupper(ptr[i]) != ptr[i])) {
ptr[i] = toupper(ptr[i]);
}
}
printf("%s ", ptr);
ptr = strtok(NULL, " ");
}
}
char str[]=" AbbA hall fameee class";
int flag=0;
int i;
for(i=0;i<len(str);i++)
{
if(flag==0 && str[i]==' ')
{
str[i+1]+=32;
flag=1;
}
else
{
flag=0;
}
}