Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2018, 11:33   #1
Алексей9912
Пользователь
 
Регистрация: 30.09.2018
Сообщений: 30
Вопрос программа по изменению регистра символов

Код:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>
#define N 2048

int main()
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n = 0, caps = 0, white = 0;
    char **str;
    while (!feof(stdin)) {
        str = (char**)realloc(str, (1 + n) * sizeof(char*));
        str[n] = (char*)malloc(N * sizeof(char));
        fgets(str[n], N, stdin);
        for (int k = 0; k < strlen(str[n]) - 2; k++) {
            if (str[n][k] != '.' || str[n][k] != '!' || str[n][k] != '?') {
                if (str[n][k + 1] == ' ') {
                    white++;
                    if (isalpha(str[n][k + 2]) && isupper(str[n][k + 2])) {
                        caps++;
                        str[n][k + 2] = tolower(str[n][k + 2]);
                    }
                }
            }
        }
        n++;
    }
    printf("\n");
    if (caps == white) {
        printf("В тексте начинаются с большой буквы все фразы.");
    } else printf("В тексте начинаются с большой буквы не все фразы!");
    printf("\n\n");
    for (int i = 0; i < n; i++) puts(str[i]);
    return 0;
}

вот код моей программы. она не дает даже ввести одну строку. где я напартачил? подскажите, пожалуйста

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 17.10.2018 в 11:43.
Алексей9912 вне форума Ответить с цитированием
Старый 17.10.2018, 13:02   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
while (!feof(stdin))
И почему это условие при старте программы будет истинным?
p51x на форуме Ответить с цитированием
Старый 17.10.2018, 13:16   #3
Алексей9912
Пользователь
 
Регистрация: 30.09.2018
Сообщений: 30
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
while (!feof(stdin))
И почему это условие при старте программы будет истинным?
дело в том, что я не знаю, какое сюда условие поставить, чтоб нормально работало. и мне кажется вся проблема в этом... а может, я еще где-то напартачил...
пробовал while ((g = getc(stdin) != EOF) && g != '\n') {...} , но в этом случае программа дает ввести один раз и вылетает
прошу подсказать. буду благодарен
Алексей9912 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по изменению файлов по сети SmilerSP Windows 7 05.01.2015 16:01
Преобразовать все буквы нижнего регистра в буквы верхнего регистра druger Помощь студентам 5 18.09.2011 17:27
Программа сигнализатор по изменению цвета на участке экрана. Nilonex Qt и кроссплатформенное программирование С/С++ 1 10.06.2011 14:40
Вопрос по изменению картинок, Дельфи grom333 Помощь студентам 5 24.01.2010 10:58
Locate без учета регистра символов _SERGEYX_ БД в Delphi 2 09.08.2007 09:52