我正在尝试从文件中读取并使用 c 将其存储在矩阵中。我的代码是
ReadSparseInput (int nvtxs,int nsize, double vector[], int rowptr[] ,int colind [] , double values[])
{
int index,row=0,column=0;
int sparsity_value, nvtxs_local;
int VECTOR_SIZE =50;
double value;
double randvect[VECTOR_SIZE];
int length=0;
char buf[BUFSIZ];
FILE *fp;
fp=fopen("/home/lopez380/Parallel/m10-A.ij", "r");
index =0;
nvtxs_local = 0;
rowptr[0] = 0;
char *p1;
while ( !feof(fp))
{
// null buffer, read a line
buf[0] = 0;
fgets(buf, BUFSIZ, fp);
// if it's a blank line, ignore
if(strlen(buf) > 1)
{
p1 = strtok(buf, " ");
row=atoi(p1);
#ifdef DEBUG
fprintf(stdout, "Row : %d ", row);
#endif
p1 = strtok(NULL, " ");
column=atoi(p1);
#ifdef DEBUG
fprintf(stdout, "column : %d ", column);
#endif
p1 = strtok(NULL, " ");
value=atof(p1);
#ifdef DEBUG
fprintf(stdout, "value : %g\n ", value);
#endif
}
}
fclose(fp);
#ifdef DEBUG
printf("lFileLen = %d\n", length);
#endif
}
当我使用 p1 并使用 atoi 将其转换为整数时,该代码运行良好。但是当我使用 atof 将值转换为浮点数时,我得到一个零。我的输入看起来像
0 0 1.76420546156578
0 3 -4.80876443295632
0 6 1.20260376970926
0 9 3.30693451100554
1 1 1.13901264701619
1 4 0.370358438592131
1 7 -0.551593262343761
在我阅读了这个输入之后,当我打印它时,我得到了
Row : 0 column : 0 value : 0
Row : 0 column : 3 value : 0
Row : 0 column : 6 value : 0
Row : 0 column : 9 value : 0
Row : 1 column : 1 value : 0
Row : 1 column : 4 value : 0
Row : 1 column : 7 value : 0
当我使用 atoi 时,我得到以下信息
Row : 0 column : 0 value : 1
Row : 0 column : 3 value : -4
Row : 0 column : 6 value : 1
Row : 0 column : 9 value : 3
Row : 1 column : 1 value : 1
Row : 1 column : 4 value : 0
Row : 1 column : 7 value : 0
有人可以帮帮我吗?