C语言读取数据,怎样进行?

liuxinguo 2005-12-31 11:11:03
31.645658
53.186227
83.124398
95.975526
134.993015
175.301374
236.784288
268.399453
379.233831
488.417237
543.916997
776.417129
828.999454
1259.659992
1467.127735
2265.225036
2327.700442
3539.075182
4405.050246
6530.120508
7358.859967
11255.128452
26006.853013
23281.854237
89196.883192
315422.262005
762293.673576
1457053.795694
2933042.400838
4633168.921386
6040257.222305
5686949.183908
7675931.226021
6470062.039756
4113128.919725
3723804.690127
3244554.300608
3070671.197536
2529277.788664
1752175.921480
1615292.246087
1635573.981278
1037761.036561
960722.870571
921582.724594
718244.195022
588505.159778
558518.056994
498645.439111
384482.054159
343705.376746
273485.163807
256826.454718
266017.389342
225946.130299
215964.789044
161176.992169
145348.421327
123864.161197
102501.651690
113472.096229

上面是"X.txt"文件里的数据,我需要在程序里面用一个double数组保存它们。。
我用了
fscanf(char *FILE,"%f",num);
record[i] = num;
为什么老是不行?
用fscanf()需要注意哪些问题?

谢谢!
...全文
206 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
neupioneer 2006-01-01
  • 打赏
  • 举报
回复
用freopen("input.txt",r,stdin);
然后
double _num;
while(scanf("%lf",&_num)==1)
{
//do what you want to do...
}
luoxin629 2006-01-01
  • 打赏
  • 举报
回复
printf("%-10s\n","ACCOUNT");这句什么意思
appleyy 2006-01-01
  • 打赏
  • 举报
回复
fscanf(文件指针,格式字符串,输入表列);
FILE*fp;
fscanf(fp,"%lf",num);
s_topman 2006-01-01
  • 打赏
  • 举报
回复
up
屋顶上的老猫 2005-12-31
  • 打赏
  • 举报
回复
楼主应该在写文件的时候注意数据的封装,对照写格式,在读取的时候就方便的多!

建议使用结构体封装数据,在读取的时候只需要读一次就可以了!
cunsh 2005-12-31
  • 打赏
  • 举报
回复
不管结构体的事.他这是在文本文件读.
seabreeze9802 2005-12-31
  • 打赏
  • 举报
回复
msdn有例子:
void main( void )
{
long l;
float fp;
char s[81];
char c;

stream = fopen( "fscanf.out", "w+" );
if( stream == NULL )
printf( "The file fscanf.out was not opened\n" );
else
{
fprintf( stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x' );

/* Set pointer to beginning of file: */
fseek( stream, 0L, SEEK_SET );

/* Read data back from file: */
fscanf( stream, "%s", s );
fscanf( stream, "%ld", &l );

fscanf( stream, "%f", &fp );
fscanf( stream, "%c", &c );

/* Output data read: */
printf( "%s\n", s );
printf( "%ld\n", l );
printf( "%f\n", fp );
printf( "%c\n", c );

fclose( stream );
}
}
xxyifan 2005-12-31
  • 打赏
  • 举报
回复
呵呵,我也是这么想的
struct dData
{
double data;
}data,*pd;

可以把数据读到这样的结构里去,处理起来就就简单了吗?
屋顶上的老猫 2005-12-31
  • 打赏
  • 举报
回复
fscanf(char *FILE,"%f",num);
不是这么用的
fscanf(FILE *stream,char *format,arg_list)

float f;
fscanf(fp,"%f",&f);
屋顶上的老猫 2005-12-31
  • 打赏
  • 举报
回复
你这么读也太烦琐了吧!
按结构体写进文件,直接重文件中读出整个结构体,比这么做要好的多!
liuxinguo 2005-12-31
  • 打赏
  • 举报
回复
void main()
{
float account;
FILE *fp;
float record[61];
int i;

if( (fp = fopen("X.txt","r")) == NULL )
printf("cannot open file!\n");
else
{
printf("%-10s\n","ACCOUNT");

for(i=0;i<61;i++)
{
fscanf(fp,"%f",&account);
record[i] = account;
}

fclose(fp);
}
printf("\n\n");
for(i=0;i<61;i++)
printf("%f\n",record[i]);
getch();
}

ok了。。
liuxinguo 2005-12-31
  • 打赏
  • 举报
回复
哦,上面的
i 搞错了,应该为 int i;
liuxinguo 2005-12-31
  • 打赏
  • 举报
回复
我发现的问题是:
float account;
FILE *fp;
float record[61],i=0;

if( (fp = fopen("X.txt","r")) == NULL )
printf("cannot open file!\n");
else
{
printf("%-10s\n","ACCOUNT");
fscanf(fp,"%f",&account);
// record[0] = account;
while(!feof(fp))
{
printf("%f\n",account);
fscanf(fp,"%f",&account);
i++;
// if(i<61)
// record[i] = account;
}
fclose(fp);
}

这样可以读出来,但是我把注释符去掉后就不行了?

难道,执行fscanf(fp,"X.txt",&account); 不是把从文件里的数据保存到account里面吗?
随后我就用record[i]记录下来,难道这样不行吗?
ouyh12345 2005-12-31
  • 打赏
  • 举报
回复
fscanf(char *FILE,"%f",num);

改成fscanf(char *FILE,"%f",&num);

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧