int main()
{
FILE *fp;
char buffer[50];
char filename[50];
int bufferLen;
int i;
int j = 0;
char c;
double c_number[50];
printf("Input file name: ");
scanf("%s", filename);
if((fp = fopen(filename, "rb")) == NULL)
{
return -1;
}
while(fgets(buffer, 50, fp))
{
for(i = 0; i < 50; i++)
{
c = buffer[i];
if(c != ' ' && c != '\n' && c != '\r') //这里过滤,读取数字,文件有符号,空格什么的
{
c_number[j] = (double)atof(c); //这里想挨个转换double没有成功
//sscanf(c, "%lf", c_number[j]);
j++;
}
}
}
fclose(fp);
调试下,目测atof(c),而c是单个字符,这是不行的。最好用split函数切割成字符串,字符串才能解析为浮点数
为什么不直接用fscanf
恩 c为char 占 1个字节 double占8个字节
把c定义成 char c[2] = {0};
这里 c[0] = buffer[i];
然后就可以 c_number[j] = (double)atof(c);
http://blog.csdn.net/hong__fang/article/details/43488265 C语言方法和C++相同