c语言的一个问题,谢谢

自己写的一个小程序一直运行通不过
请帮看一下什么问题。提示:str!=null.....可能是fgets()的问题,不过我自己又找不出来...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

void main()
{
FILE *in,*out;
char str[100];
float x[1000],y[1000];
int i,j;

if(in=fopen("spline.dxf","r")==NULL)
{
printf("read faild");
getch();
}

i=0;
while(fgets(str,100,in)!=NULL)
{
if(str=="POLYLINE")
{
while(fgets(str,99,in)!=NULL)
{
if(str==" 10")
{
fgets(str,100,in);
x[i]=atof(str);
}
else if(str==" 20")
{
fgets(str,100,in);
y[i]=atof(str);
i++;
}
else
fgets(str,100,in);
}
}

};
fclose(in);

//write xyr.xyr

j=i;
out=fopen("XYR.XYR","w");

fprintf(out,"1\n");
fprintf(out,"1\n");
fprintf(out,"%d",i);
fprintf(out,str);

for(i=0;i<j;i++)
{
fprintf(out,"%d %f %f 0\n",i+1,x[i],y[i]);
}

close(out);

}

读的是很简单的一个文件,发几行如下:
VERTEX
8
0
5
9B
10
0.785340
20
1.30877
30
0.000000
70
32
0
VERTEX
8
0
5
9C
10
1.57068
20
2.61677
30
0.000000
70
32
0

我只是从里面截取了几段,实际上时R12LT2的dxf文件...
哦~,dxf里还有着行
ENTITIES
0
POLYLINE
8

/*程序写的很有问题,自己多写写,多看看吧!!!!!*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

void main()
{
FILE *in,*out;
char str[100]; /*应该初始化*/
float x[1000],y[1000]; /*同上*/
int i,j;

/*这条语句错误,少了个括号
if(in=fopen("spline.dxf","r")==NULL)
*/
if ((in = fopen("spline.dxf", "r")) == NULL)
{
printf("read faild");
getch();
}

i = 0;

while(fgets(str, 100, in)!=NULL)
{
/*if(str=="POLYLINE")*/ /*字符串不可以这么比较:str是个指针*/
if (!strcmp(str, "POLYLINE")) /*最好使用strncmp:或其它限定函数*/
{

while(fgets(str,99,in)!=NULL)
{
if(str==" 10") /*同上*/
{
fgets(str,100,in);
x[i]=atof(str);
}
else if(str==" 20") /*同上*/
{
fgets(str,100,in); /*判断是否出错?!!!*/
y[i]=atof(str);
i++;
}
else
fgets(str,100,in); /*判断是否出错,这是必须的*/
}
}

fclose(in);

/*这样的注释在某些编译器下是不能通过的:example-linux or aix: cc */

//write xyr.xyr /*不要这么注释*/
/*write xyr.xyr*/

j=i;
out=fopen("XYR.XYR","w"); /*希望有个if判断*/

fprintf(out,"1\n");
fprintf(out,"1\n");
fprintf(out,"%d",i);
fprintf(out,str);

for(i=0;i<j;i++)
{
fprintf(out,"%d %f %f 0\n",i+1,x[i],y[i]);
}

close(out); /*注意:你使用的打开文件的函数是fopen,这里要用fclose函数*/

return; /*不管函数是否需要返回值,最好都加上return*/

}
温馨提示:答案为网友推荐,仅供参考
相似回答