g++ でコンパイルされたプログラム seg がstrncat()
呼び出しで失敗する理由を理解するのに苦労しています。
私はこのサイトと一般的なグーグルを飛び回っていて、多くの同様の問題を見つけましたが、私にとってうまくいく解決策は見つかりませんでした. これははるかに大きなコードの一部であり、コードが私のものではないため、変数を再定義するためにできることは限られています。
コードのこのセクションで行うことはすべて、ファイルの最後の行を読み取り、関連するデータを削除して char* に連結することです
実行すると、次の行でセグメンテーション違反が発生しますstrncat(RAM,nextchar,1)
char line[256]={"0"};
char nextchar[10]={"0"};
int length=0;
double rac;
double decc;
bool SPACE=false;
char * RAM="RA: ";
char * DECM="DEC: ";
if(AutoColData.good()){
while(!AutoColData.eof()) AutoColData.getline(line,256);
for(int i=0;i<strlen(line);i++){
nextchar[0]=line[i];
cout<<line[i];
if(isspace(nextchar[0])&& !SPACE) SPACE=!SPACE;
else if(SPACE && !isspace(nextchar[0])){
SPACE=!SPACE;
length++;
}
if(length==6) {
cout<<"\n"<<RAM<<nextchar<<"\n";
strncat(RAM,nextchar,1);
}
else if(length==7) strcat(DECM,nextchar);
}
}
ここにはずさんな選択肢がいくつかありますが、私は知っています(「スペース」全体が乱雑です)。しかし、これが Seg Fault になる理由はわかりません。strncat() のある行までは問題なく動作します。cout は正常に動作し、両方の文字列が出力され、正しいデータが含まれていますが、strncat は失敗します。私はmalloc()、文字列を使ってみましたが、何もうまくいかないようです。誰かが私がやっている愚かなことを指摘できれば、それは非常に役に立ちます. ありがとうございました。