我无法弄清楚为什么我的 g++ 编译程序在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()、字符串,但似乎没有任何效果。如果有人能指出我在做什么愚蠢的事情,那将非常有帮助。谢谢你。