标题:fscanf问题,求大神,找了无数人都没找出问题
只看楼主
dubuzherui
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-12
得分:0 
回复 10楼 TonyDeng
好吧……
2013-08-13 14:20
h13352825861
Rank: 2
来 自:中国
等 级:论坛游民
威 望:1
帖 子:39
专家分:72
注 册:2013-8-8
得分:0 
fscanf(文件指针,格式字符串,输入列表),是将文件指针指向的内容写入输入列表。
fprintf(文件指针,格式,输入列表),是输入列表的内容写入问件指针指向的文件!

相信汗水会让未来充满满了阳光!
2013-08-13 14:28
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
呵呵,遇到个小师弟,看到P、Q很亲切啊。你的网络方程计算部分呢?

只有几条读文件的语句。还没定义文件指针,那怎么可能不报错。

重剑无锋,大巧不工
2013-08-13 14:55
dubuzherui
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-12
得分:0 
回复 13楼 beyondyf
师兄好,你也是学电气的吗?
这个是一个读取节点参数的子函数,调试的时候没有报错,运行的时候就报错了!
我排除了一下,发现应该是fscanf函数用的不对,但是就是不知道为什么错了,fscanf函数,用上结构体指针好混乱,不太懂,还请师兄指教!
这是我写的一个小程序,也有这问题:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

struct Nodetype  /*节点功率*/
{
    float P,Q;
}*temp;

const int MAX_N=7;
int main()
{
    int x,i;
    FILE *fp;

    fp=fopen("data1.txt","r");
    if(fp==NULL) printf("\n error");
    if(i<=MAX_N)
    {
        for(i=1;i<=MAX_N;i++)
            fscanf(fp,"%d",&x),printf("%d\n",x);
   
            fscanf(fp,"%f",&temp->P);
    }
    return 0;
}
2013-08-13 15:51
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
电气出身,现在还在和有功无功打交道。

你这段代码问题还是挺多的。

首先,对打开文件是否成功的判断方式有问题,即使打开文件不成功依然会执行下面的读文件操作,这时会出错。

第二,读文件的那个循环应该将两个fscanf全包含进去,或者在一个fscanf里读取整条记录,而且你现在写的也没有正确读取你的文件(你的每条记录包含6个字段才对吧)。

第三,temp你定义的是个指针,而不是一个结构体实体,这会导致内存访问出错,你的程序报的应该就是这个错。

第四,变量i在第一次使用前没有进行初始化。

第五,文件访问完后没有关闭文件。

你这是在做课设吗?建议你用matlab写更容易一些,复数的操作会很简单。C99中有复数类型,也能带来些方便。

重剑无锋,大巧不工
2013-08-13 17:28
dubuzherui
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-12
得分:0 
回复 15楼 beyondyf
谢谢师兄,我看能不能换种方式实现,这个有点乱了,呵呵
2013-08-14 14:40



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




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

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