• Segfault, не могу найти ошибку, что надо исправить(C++)?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    @#$%^#$%^$%^&@#$%^

    Вы сайтом ошиблись, это надо на говнокод постить.

    #define вместо констант - лажа, но допустимая.

    Rainberd углядел, что в самопальной сортировке классическая "ошибка копипаста". Посмотрите внимательно на вложенный цикл, там условие должно быть j<n, а у вас - i < n Это сегфолт номер раз.

    А вот это - причина сегфолта номер два:
    char *str_pr = &str[0u];
    char *quality=&str2[0u]   ;

    В версиях до C++11 нет никаких гарантий, что это дело указывает на массив всех символов строки.
    В любых версиях нет никаких гарантий, что этот адрес будет неизменным в течении жизни строки.

    Кто надоумил вас использовать функционал библиотеки C для работы со строками, да еще и смешивать его с STL?

    Самопальная сортировка - тоже ужас. Этот код проще переписать, чем рефакторить.
    int i;
    for(i=....

    Откройте для себя объявление индекса внутри цикла:
    for(size_t i=0...

    Откройте для себя, что массивы должны индексироваться при помощи size_t, а не int.

    Тут в большинстве своем код на C, с операторами C++ в некоторых местах. Печать структур просится, например, в виде дообъявления оператора << у ofstream.

    Если это студенческая работа, преподавателя, который "подготовил" такого студента нужно лишить конфет и поставить в угол.
    Ответ написан
    8 комментариев