| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:C语言 怎样读取文件 按行读入数字 挨个转换成double类型存入数组, 求审代码 ...
只看楼主 加入收藏
cevin880221
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-4-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
C语言 怎样读取文件 按行读入数字 挨个转换成double类型存入数组, 求审代码。
int main()
{
    FILE *fp;
    char buffer[50];
    char filename[50];
    int bufferLen;
    int i;
    int j = 0;
    char c;
    double c_number[50];
   
    printf("Input file name: ");
    scanf("%s", filename);
   
    if((fp = fopen(filename, "rb")) == NULL)
    {
        return -1;
    }
    //用的fgets 按行读取
    while(fgets(buffer, 50, fp))
    {
        for(i = 0; i < 50; i++)
        {
        c = buffer[i];
         //过滤字符
        if(c != ' ' && c != '\n' && c != '\r')
        {
            //尝试转换字符
            c_number[j] = (double)atof(c);
            //sscanf(c, "%lf", c_number[j]);
            j++;
        }
        }
    }
    fclose(fp);

---------------------- Table -----------------------------------------------
Column_1: 160,591,114,229,230,270,128,1657,624,1503
Column_2: 15.0,69.9,6.5,22.4,28.4,65.9,19.4,198.7,38.8,138.2



[ 本帖最后由 cevin880221 于 2015-4-1 10:41 编辑 ]
搜索更多相关主题的帖子: double return C语言 file 
2015-04-01 00:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
把你的文件放上来。

授人以渔,不授人以鱼。
2015-04-01 02:34
heso
Rank: 2
等 级:论坛游民
帖 子:20
专家分:39
注 册:2015-3-15
收藏
得分:7 
我看楼主的代码转换字符的时候是逐行单个字符转换的意思对吧,楼主有没有想过小数点如何转换呢,再者说了,atof函数也不是这样子用的哈,楼主参考百度atof函数的例子
#include<stdlib.h>
#include<stdio.h>
int main()
{
double d;
char*str="12345.67";
d=atof(str);
printf("string=%sdouble=%lf\n",str,d);
return0;
}
2015-04-01 09:56
heso
Rank: 2
等 级:论坛游民
帖 子:20
专家分:39
注 册:2015-3-15
收藏
得分:0 
楼主参考以下我修改的代码
#include<stdio.h>
#include<stdlib.h>
#define N 2
int main()
{
    FILE *fp;
    char buffer[50];
    int i;
    int j = 0;
    double c_number[50];
        
    if((fp = fopen("temp.dat", "r")) == NULL)
    {
        printf("ERROR!\n");exit(0);
    }
    for(i=0;i<N;i++)
    {
    fgets(&buffer[i],50,fp);
    c_number[i]=atof(&buffer[i]);
    printf("%lf\n",c_number[i]);
    }
    fclose(fp);
    system("pause");
    return 0;
}
一起学习,望交流、
2015-04-01 10:05
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:7 
回复 楼主 cevin880221
程序代码:
#include <stdio.h>
#include <stdlib.h>

void eatwords(FILE *fp);

int main(int argc, char **argv) {
    int rows = 1, c, i, j;
    double (*a)[10];
    FILE *fp = NULL;

    if(argc != 2) exit(EXIT_FAILURE);

    if(!(fp = fopen(argv[1], "r"))) exit(EXIT_FAILURE);

    while(!feof(fp))
        while((c = getc(fp)) != EOF) if(c == '\n') rows++;

    rewind(fp);
    eatwords(fp);

    if(!(a = malloc(rows * 10 * sizeof(double)))) exit(EXIT_FAILURE);

    for(i = 0; i < rows; i++) {
        for(j = 0; j < 10; j++) {
            fscanf(fp, "%lf", &a[i][j]);
            getc(fp);
            printf("%.1f ", a[i][j]);
        }

        eatwords(fp);
        printf("\n");
    }

    fclose(fp);
    free(a);
    return 0;
}

void eatwords(FILE *fp) {
    int c;

    while((c = getc(fp)) != ' ' && c != EOF) continue;
}


文件内容要严格按示例
EOF之前不能有换行

Only the Code Tells the Truth             K.I.S.S
2015-04-01 22:09
快速回复:C语言 怎样读取文件 按行读入数字 挨个转换成double类型存入数组, 求 ...
数据加载中...
 
   



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

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