Как исправить ошибку сегментации из структур в C ++? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь записать каждое уникальное слово из текстового файла в структуру уникальных слов, я еще не так далеко, но я получаю ошибку сегментации, когда пытаюсь записать значения в мой массив структур.

Мы не можем использовать указатели, так как мы еще не узнали о них, и мы должны использовать использование пространства имен std.

Я прекрасно понимаю, как использовать циклы для уникальной части слова, мне просто нужна помощь, чтобы выяснить, как исправить ошибку сегментации. Я сузил его до того места, где ошибка сегментации начинается с цикла for в цикле do-while, но я не знаю, куда идти дальше, и я не нашел в Интернете ничего, что могло бы помочь.

#include <iostream>
#include <fstream>
#include <cmath>
#include <string>

using namespace std;

struct UniqueWord{
    string word;
    int numOccurences;
};

int main(){

    const int N = 100000;
    ifstream CleanedText;
    CleanedText.open("testTextCleaned.txt"); //change to proper text later
    string word1;
    string words[N];
    for(int i = 0; i < N; i++){
        CleanedText >> words[i];
    }
    CleanedText.close();
    CleanedText.open("testTextCleaned.txt"); //change to proper text later
    UniqueWord wordarray[N];
    for(int i = 0; i < N; i++){
        CleanedText >> word1;
        do{
            for(int j = 0;j<N+1;j++){
                wordarray[j].word = word1;
            }
        }while(words[i] != word1);

    } 

    return 0;
}

Я ожидаю, что смогу поместить каждое слово из исходного файла в массив структур.

1 Ответ

3 голосов
/ 26 апреля 2019

Потерять +1 в конечном состоянии.

        for(int j = 0;j<N/*+1*/;j++){
            wordarray[j].word = word1;
        }

J нужно перейти от 0 до N-1. Скажем, N равно 2, wordarray [0] и wordarray [1] действительны. wordarray [2] нет.

...