【发布时间】:2016-06-24 23:35:19
【问题描述】:
我通过读取一个在线的文件得到了一个字符串。 C 是数字之间的分隔符。
3000C9.5452C5.644 ...
现在我想提取所有这些数字并将它们写入一个称为 Matrix 的双精度数组。
fgets(input_string, filesize, infile);
int matrix_size = (int) strtof(input_string, &input_end);
++input_string;
int binary_matrix_size = sizeof (double)*(matrix_size * matrix_size);
double *Matrix = malloc(binary_matrix_size);
for (int index = 0; index < (matrix_size * matrix_size); ++index) {
while (!isdigit(input_string) && input_string) {
++input_string;
}
Matrix[index] = strtod(input_string, &input_end);
input_string = input_end;
}
【问题讨论】:
-
3000C9.5452C5.644..?? 是哪种浮点数? -
您可以从 ASCII 表中检查特定范围的数字,即 0x30 - 0x39 (1-9),如果您认出它,只需将它们替换为适当的整数。
-
while (!isdigit(input_string) && input_string)--> 应该是while (!isdigit(*input_string) && (*input_string != '\0') && input_string )BTW 我真的不知道你的代码应该做什么...... -
不清楚,因为:为什么要使用strtof来提取数组大小?如果需要数组,为什么要分配矩阵?您的 for 必须迭代 matrix_size 次。正如我之前发布的那样,while 必须更改.....
-
如果
C是分隔符,代码应该寻找C。
标签: c while-loop segmentation-fault double strtod