1

私のC++プログラムは、main()からこの関数を呼び出すまでコンパイルされ、動作します。

int uword(){fstream infile("numbers.txt");
fstream exfile("wordlist.txt");
string numb[numoflines];
string lines[numoflines];  
number = 1; 
line = 1;  
for(int i=0;i<numofline;++i)
    {
    getline (infile,number);
    numb[i] = number; //I think this is causing the problem
    getline (exfile,line);
    lines[i] = line; //This too
    }
infile.close();
exfile.close();    
string yourword;

ここで何かが原因でクラッシュします。デバッグでは、「プログラムでアクセス違反(セグメンテーション違反)が発生しました」というメッセージが表示されます。

編集:私の間違いは、forループで!infile.eofを使用していたことです。

4

2 に答える 2

3

直接的な回答ではありませんが、良い回答だと思います...

デバッガを使おう!GDB は、セグメンテーション違反が発生した正確な行で停止する必要があるため、エラーの内容について非常に良いヒントが得られます。

于 2011-01-01T18:46:54.590 に答える
1

このgetline関数は、思ったとおりに機能しません。

また、には複数のnumoflines行が含まれる可能性がありinfileます。

于 2011-01-01T18:44:05.637 に答える