fscanf问题,求大神,找了无数人都没找出问题
整理了一下,大伙帮忙看看,谢谢了!#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
/*结构体变量定义*/
struct Nodetype /*节点功率*/
{
float P,Q;
};
/*全局变量声明*/
int Node; /*节点数*/
int *Num; /*保存原始节点序号*/
int NP,NQ=0; /*PV+PQ、PQ节点数*/
struct Nodetype *No; /*节点数据*/
float *V;
float *Dlta;
int i,j,m;
FILE *in,*out;
/*报错子函数*/
void ErrorMsg(int n)
{
if(n==1)
{
printf("cannot open zhe file");
getch();
exit(1);
}
if(n==2) printf("cannot open zhe file");
if(n==3) printf("cannot open zhe file");
if(n==4) printf("cannot open zhe file");
}
/*这个函数的功能是读取,data文件里面的数据*/
void main()
{
int k;
struct Nodetype *Noi;
if((in=fopen("Data.txt","r"))==NULL) ErrorMsg(1);
fscanf(in,"%d %d",&Node,&k); /*读取节点数目Node*/
NP=Node-1; /*PV+PQ节点数,即非平衡节点数目*/
Num=(int *)malloc(sizeof(int)*Node); /*开Node个空间,每节点一个*/
V=(float *)malloc(sizeof(float)*Node); /*电压*/
Dlta=(float *)malloc(sizeof(float)*Node); /*电压相角*/
No=(struct Nodetype*)malloc(sizeof(struct Nodetype)*Node); /*节点功率*/
while(k!=0) /*若k=0,说明节点数据读取完毕*/
{
switch(k)
{
case 1:k=NQ;NQ++;break; /*pq节点*/
case 2:k=NP-j;j++;break; /*pv节点*/
case 3:k=NP;break; /*平衡节点*/
default:ErrorMsg(3);
}
Noi=No+k;
fscanf(in,"%d %f %f %f %f",&i,&(*Noi).P,&(*Noi).Q,V+k,Dlta+k);
i--;
*(Num+i)=k;//第i个Num元素中存放i节点在NO中的下标
fscanf(in,"%d",&k);//读取节点类型
}
}
这是潮流计算的一个子函数,读取节点数据,调试没有报错,运行就报错!
[ 本帖最后由 dubuzherui 于 2013-8-13 11:05 编辑 ]