| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1639 人关注过本帖
标题:读txt文件的问题
只看楼主 加入收藏
paulll
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
读txt文件的问题
大家好,

对于一个存有若干float型数据的txt文件,各数据之间由等长的若干空格隔开,我想把其中从某一位置开始的连续若干数据读入到一个一维数组中,比如读入txt文件中从第5个到第10个数据,请问该如何操作?

谢谢!
搜索更多相关主题的帖子: 数据 如何 
2012-07-06 17:31
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
FILE *fp;
fp=fopen("1.txt","r");
int a[100];
int Asize= 100;
fread(a,sizeof(float),Asize,fp);

操作a[5]到a[10]即可,代码可能有误。我的基本思路就是这样
2012-07-06 19:02
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
如果是有格式的话fscanf吧...
2012-07-06 21:19
kennel2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2011-12-13
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

void readNum(char* filename, float *numArray,const int begin, const int num);

/**************************************************
**    Function:    int main(int argc, char** argv)
**    Params:       
**    Return:        0 - 成功
**  Author:        kennel
**  Time:        2012.07.06
**    Description:程序入口
***************************************************/
int main(int argc, char** argv)
{

    float *Array;
    int num;        //需要取的数字个数
    int firstNum;    //从第firstNum个数字取
    int i = 0;        //验证目标数组存放的数字时,数组下标

    scanf("%d %d", &firstNum, &num);
    printf("从文本1.txt中的第%d个数开始读%d个数\n", firstNum, num);

    Array = (float*)malloc(sizeof(float) * num);//申请数组内存空间
    readNum("1.txt", Array, firstNum, num);       
   
    printf("验证数组中的值:");
    for (; i < num; i++)
    {
        printf("%f ", Array[i]);
    }
    free(Array);

    scanf("%d", &num);//此句无任何用处,只是为了看终端显示,防止程序一闪消失

    return 0;
}
/***********************************************************************************
**    Function:    void readNum(char* filename, float *numArray,
**                              const int begin, const int num)
**    Params:        char* filename  - 需要打开的文件名
**                float *numArray - 目的数组,将获取的数放入此数组中
**                const int begin - 文件filename中第begin个数字
**                const int num   - 需要从文件filename中取的数字个数
**    Return:        void
**  Author:        kennel
**  Time:        2012.07.06
**    Description:从文件filename中的第begin个数开始读num个数,分别存入数组numArray中
************************************************************************************/
void readNum(char* filename, float *numArray,const int begin, const int num)
{
    FILE *fp;
    int i = 0;

    if ((fp = fopen(filename,"r")) != NULL)
    {
        if (!feof(fp))
        {
            for (; i < begin - 1; i++)
            {//为了找到第一个数字的位置
                fscanf(fp, "%f", &numArray[0]);
                //printf("%f ", numArray[0]);
            }
            printf("\n");
            i = 0;
            for (; i < num; i++)
            {//从找到的数字位置开始的num个数存入数组
                fscanf(fp, "%f", &numArray[i]);
                //printf("%f ", numArray[i]);
            }
        }
    }

    fclose(fp);
}
程序在VS2005下编译通过.
图片附件: 游客没有浏览图片的权限,请 登录注册

如果满意请多给分,以示鼓励!
收到的鲜花
  • paulll2012-07-07 11:22 送鲜花  3朵   附言:我很赞同
2012-07-06 22:47
paulll
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-6
收藏
得分:0 
回复 4楼 kennel2009
这个方法很好,这样我就能避免先把整个txt读出来,再copy需要部分的指定数组的操作,节省了内存开销。非常感谢!
2012-07-07 11:20
快速回复:读txt文件的问题
数据加载中...
 
   



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

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