| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:急!!!求教文件读取的问题。
只看楼主 加入收藏
supercn
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-1-27
收藏
 问题点数:0 回复次数:7 
急!!!求教文件读取的问题。
#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 
2008-05-18 16:32
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
可能是你的文件有问题吧?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-18 18:39
supercn
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-1-27
收藏
得分:0 
回复 2# 的帖子
能不能具体说说,是什么问题。
2008-05-18 19:37
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
我测试了一下
#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这个文件上,你在这个里面到底保存了什么内容??

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-05-18 19:49
duduchang
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2008-5-6
收藏
得分:0 
同感!
有同样问题!
程序好像不会访问我们建好在盘上的内容!
2008-05-18 19:59
supercn
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-1-27
收藏
得分:0 
回复 4# 的帖子
这个文件是通过matlab的save命令生成的一个文本文件。没有什么附加内容啊?
2008-05-18 20:03
supercn
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-1-27
收藏
得分:0 
换一个提法
或者说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个数读入到一个数组中?
2008-05-18 20:15
windfresh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-18
收藏
得分:0 
给你提供一个解决方案,这个方案的关键是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();
}
2008-05-18 21:26
快速回复:急!!!求教文件读取的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043404 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved