标题:为什么读取数组的时候会出现这样的错误。
只看楼主
校草
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2017-3-15
结帖率:75%
 问题点数:0 回复次数:7 
为什么读取数组的时候会出现这样的错误。
程序代码:
int main()
{
    //=====================================================
    //基本数据
    const int LIE = 10;//列数 经度的数量(几个不同的数)
    const int HANG = 12; //行数 纬度的数量
    float lon[LIE*HANG];
    float lat[LIE*HANG];
    int soiltype[LIE*HANG];//土壤类型个数的总量


    //======================================================
    FILE* in, *out;
    in = fopen("F:\\2017C\\soil_test.txt", "r");//读入路径
    out = fopen("F:\\2017C\\1.txt", "w");//输出路径
    while (!feof(in))
    {
        fscanf(in, "%f" "%f" "%d", lon, lat, soiltype);//调试的时候发现数据并没有真的读入数组中,循环到最后只有soiltype[0]有数值,其他都不是真正的数值?
    }
   
为什么会这样呢?下面是读入的数据格式
程序代码:
97     43    2   
97.5    43     1   
98     43    2   
98.5     43    2   
99     43    2   
99.5     43     5     
100    43    2   
100.5    43    2   
101    43    2   
101.5    43    2   
102    43     4   



[此贴子已经被作者于2017-5-18 21:51编辑过]

搜索更多相关主题的帖子: 读取 数组 错误 int 读入 
2017-05-18 21:48
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
fscanf(in, "%f %f %d", lon, lat, soiltype);//漏了 &

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-18 21:49
校草
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2017-3-15
得分:0 
回复 2楼 renkejun1942
加上&,还是一样,不能给数组里的每一个值都赋值。另外我似乎记得给数组赋值不需要加&,还请大神解答
2017-05-19 11:33
校草
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2017-3-15
得分:0 
回复 2楼 renkejun1942


变成这样了,后面的数根本没有读进去
2017-05-19 11:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
没soil_test.txt文件,大概是这样吧

#include <stdio.h>
int main()
{
    //=====================================================
    //基本数据
    const int LIE = 10;//列数 经度的数量(几个不同的数)
    const int HANG = 12; //行数 纬度的数量
    float lon[LIE*HANG];
    float lat[LIE*HANG];
    int soiltype[LIE*HANG];//土壤类型个数的总量


    //======================================================
    FILE* in, *out;
    in = fopen("F:\\2017C\\soil_test.txt", "r");//读入路径
    out = fopen("F:\\2017C\\1.txt", "w");//输出路径
    int i=0;
    while (!feof(in) && i<HANG)
    {
        fscanf(in, "%f %f %d", &lon[i], &lat[i], &soiltype[i]);
        fprintf(out, "%f %f %d\n", lon[i], lat[i], soiltype[i]);
        i++;
    }
    fclose(in);
    fclose(out);
}
   
2017-05-19 11:46
校草
Rank: 1
等 级:新手上路
帖 子:50
专家分:7
注 册:2017-3-15
得分:0 
回复 5楼 吹水佬
好吧!还是得借助下标,一个一个赋值!学习了
2017-05-19 11:53
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
得分:0 
这种问题也拿出来问,scanf函数都没整明白
2017-07-06 11:39
nandoulong
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2017-7-6
得分:0 
首先你得读到内存里,才能写进文件中
2017-07-06 13:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477122-1-1.html




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

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