gpt4 book ai didi

c - Segmentation fault (core dumped) 错误,没有行引用

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:15 24 4
gpt4 key购买 nike

我收到“段错误(核心已转储)”错误。这段代码之前工作正常,我不知道是什么原因造成的。任何指针将不胜感激。此错误也没有提供行引用。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int assignX(int nCol, int nRow, double *Xflat, char *fileName);

int main(){
FILE *f;
char myStr[1000];
int strL;
int nCol;
int nRow;
char *fileName = "reg.dat";
int i, j, k, z, n1=nCol, n2=1, info;

double *Xflat;
double *temp;

f = fopen(fileName, "r");
if (f == NULL) perror ("Error opening file");
else {
if (fgets(myStr, 1000, f) != NULL )
puts(myStr);
fclose(f);
}

strL = strlen(myStr);
nCol = 3;
nRow = 150;
printf("Sample size and number of predictors are %d and %d respectively.\n", nRow, nCol-1);

assignX(nCol, nRow, Xflat, fileName);

return 0;
}

int assignX(int nCol, int nRow, double *Xflat, char *fileName){
int i=0;
int j;
int k=0;
char string[1000];
char* data = NULL;
FILE *f;
f = fopen(fileName, "r");

while(fgets(string, sizeof(string), f) != NULL){
data = strtok(string, " ");
for (j=0; NULL != data && j<nCol; j++){
if (data[strlen(data) - 1] == '\n')
data[strlen(data) - 1] = '\0';

if (j!=0){
Xflat[i] = atof(data);
i++;
}
data = strtok(NULL, " ");
}
}

for (i=0;i<(nRow*(nCol-1));i++){
printf("%f\n", Xflat[i]);
}

return 0;
}

最佳答案

这里的问题是,您正在使用未初始化的 double *Xflat;。访问未初始化的内存调用 undefined behaviour这反过来可能导致段错误。

使用前需要为double *Xflat;分配内存。

建议:在编译时启用 -g 标志,并通过调试器(如 gdb)运行二进制文件。大多数情况下,将错误定位到特定行号本身。

关于c - Segmentation fault (core dumped) 错误,没有行引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com