急!!!求教文件读取的问题。
#include <stdio.h>main()
{
double m[10];
int i;
FILE *fp;
if((fp=fopen("c:\\turboc2\\mat\\a.txt","rb"))==NULL)
{printf("can't open\n");
exit(0);
}
if((fread(m,sizeof(double),10,fp))!=10)
printf("wrong\n");
for(i=0;i<10;i++)
printf("%f ",m[i]);
fclose(fp);
return;
}
很简单的一个程序,就是从a.txt文件中读10个数据存储到数组m中。a.txt的内容为
1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000 9.0000000e+000 1.0000000e+001
但输出结果却是10个0。
烦劳高手们帮我看看。不胜感激!
----------------解决方案--------------------------------------------------------
可能是你的文件有问题吧?
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
能不能具体说说,是什么问题。 ----------------解决方案--------------------------------------------------------
我测试了一下
#include <stdio.h>
main()
{
double m[10];
int i;
FILE *fp;
if((fp=fopen("a.txt","wb"))==NULL)
{
printf("can't open\n");
return;
}
if((fread(m,sizeof(double),10,fp))!=10)
printf("wrong\n");
for(i=0;i<10;i++)
printf("[%d]\t%f\n",i,m[i]);
fclose(fp);
}
事实证明,这个代码没有问题。问题出在c:\\turboc2\\mat\\a.txt这个文件上,你在这个里面到底保存了什么内容??
----------------解决方案--------------------------------------------------------
同感!
有同样问题!程序好像不会访问我们建好在盘上的内容!
----------------解决方案--------------------------------------------------------
回复 4# 的帖子
这个文件是通过matlab的save命令生成的一个文本文件。没有什么附加内容啊? ----------------解决方案--------------------------------------------------------
换一个提法
或者说a.txt的内容为1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000 9.0000000e+000 1.0000000e+001
能否写一个程序将这10个数读入到一个数组中?
----------------解决方案--------------------------------------------------------
给你提供一个解决方案,这个方案的关键是strtok和atof的使用,希望能帮上忙。
#include <stdio.h>#include <stdlib.h>
#include "conio.h"
#include <string.h>
main()
{
FILE *fp;
char command[200];
char *result=NULL;
float data[20];
char cc[]=" ";
int i=0;
fp=fopen("D:\\My Documents\\Visual Studio Projects\\fread\\a.txt","r");
if(!fp)
{
printf("can't open the file,exiting...\n");
exit(1);
}
while(fgets(command,200,fp)!=NULL)
{
puts(command);
result=strtok(command,cc);
while( result != NULL )
{
data[i]=atof(result);
printf("%d,%f\n",i,data[i]);
result = strtok(NULL,cc );
i++;
}
}
fclose(fp);
printf("\n");
//for(i=0;i<80;i++)
//printf("%f\n",data[i]);
getch();
}
----------------解决方案--------------------------------------------------------