关于C语言文件读取和处理的问题,如何按行读取文件,挨个转换成double型数据,存入数组?

int main()
{
FILE *fp;
char buffer[50];
char filename[50];
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]); 这里我try了下sscanf必须字符串
j++;
}
Add(c_number[j]); //我的方法需要传入double类型的参数
}
}
fclose(fp);
---------------------------------------------------------------------------------------------------

15.0,69.9,6.5,22.4,28.4,65.9,19.4,198.7,38.8,138.2
160,591,114,229,230,270,128,1657,624,1503
//这是我的输入table,看着挺简单,上手真不会读了。
-------------------------------------------------------------------------------------------------------

Add(c_number[j]); //我的方法需要传入double类型的参数

我有个方法调用,需要从文件中拿到数字,而文件中存在浮点数。

又不是特别熟悉C语言,现在TABLE表是一行为一组数据要处理,并且行的内容会很大
怎么读取到每行数据里的数字,在传入到我调用的方法,是我现在的问题

如果文件中的数据是以每行一个保存的,你的代码可以处理,但多做了不必要的操作。如果每行有多个数据,并以空白符(\t,\n,空格)分隔时,可以用fscanf(fp,"%lf",&c_number[i]);读取。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-01
如果数据不是很大的话,应该和数组类型没什么关系,因为你是要保存到数据中处理。 Matlab的save命令有保存为txt格式的选项: save data.dat var -ascii 不过这样得到的数据文件输出顺序你要自己判断一下是行优先还是列优...追问

Add(c_number[j]); //我的方法需要传入double类型的参数

我有个方法调用,需要从文件中拿到数字,而文件中存在浮点数。

又不是特别熟悉C语言,现在TABLE表是一行为一组数据要处理,并且行的内容会很大
怎么读取到每行数据里的数字,在传入到我调用的方法,是我现在的问题

相似回答