当前位置: 代码迷 >> C语言 >> 急!!!求教文件读取的问题。
  详细解决方案

急!!!求教文件读取的问题。

热度:257   发布时间:2008-05-18 16:32:36.0
急!!!求教文件读取的问题。
#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。
烦劳高手们帮我看看。不胜感激!
搜索更多相关的解决方案: quot  文件  txt  printf  

----------------解决方案--------------------------------------------------------
可能是你的文件有问题吧?
----------------解决方案--------------------------------------------------------
回复 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();
}
----------------解决方案--------------------------------------------------------
  相关解决方案