Задать вопрос
@YermolaevG

Как исправить ошибку в программе на Qt C++?

Даже стыдно задавать такой вопрос тут, но делать нечего.

Кусок программы ниже должен вычленять и выводить из введенных строк подстроки, не содержащие кириллических символов, вместо чего программа молча вылетает. Версия Qt: 4.7.4

#include <iostream>
#include <stdio.h>

struct substr{
    char string [81];
    char subs [41][81];
    int sub_n;
};

using namespace std;

void sub_search (substr *str){
    int i;
    char *s, *s1;
    s = str->string;
    while (*s){
        if (*s < 'А' || *s > 'я'){
            s1 = s;
            i = 0;
            while (*s1 < 'А' || *s1 > 'я'){
                str->subs[str->sub_n][i] = *s1;
                s1++, i++;
            }
            s = s1 + 1;
            str->sub_n++;
        }
        s++;
    }
}

int main()
{
    setlocale(LC_ALL,"RUS");
    int nmax = 20, i, j, n = 0;
    struct substr str[nmax];
    printf ("Введите строки (<=%d)\n", nmax);
    while(n < nmax && *gets(str[n].string)) n++;
    for (i = 0; i < n; i++){
        sub_search(&str[i]);
        if (str[i].sub_n)
            for (j = 0; j < str[i].sub_n; j++)
                printf ("%s\n", str[i].subs[j]);
        }
    return 0;
}


p.s. пожалуйста, не пинайте, я всего лишь первокурсник.
  • Вопрос задан
  • 2787 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
@Kyberman
Вот в этом цикле:
while (*s1 < 'А' || *s1 > 'я'){
  str->subs[str->sub_n][i] = *s1;
  s1++, i++;
}

в условии while не помешала бы проверка на выход за пределы строки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы