这段代码一直报错
#include<stdio.h>
#include<math.h>
int main()
{
FILE *p1;
p1=fopen("table.txt","w");
if(p1==NULL) printf("error");
fprintf(p1,"Nubmer\tSquare\tSquare root\n");
fprintf(p1,"-----------------------------------------------\n");
int i; \\int i 在这里
for(i=0;i<100;i++)
fprintf(p1,"%5d\t%5d\t%2.3f\n",i+1,(i+1)*(i+1),sqrt(1.0*(i+1)));
return 0;
}
找了半天问题最后换一下int i的位置后就好了
#include<stdio.h>
#include<math.h>
int main()
{
int i; \\在这里
FILE *p1;
p1=fopen("table.txt","w");
if(p1==NULL) printf("error");
fprintf(p1,"Nubmer\tSquare\tSquare root\n");
fprintf(p1,"-----------------------------------------------\n");
for(i=0;i<100;i++)
fprintf(p1,"%5d\t%5d\t%2.3f\n",i+1,(i+1)*(i+1),sqrt(1.0*(i+1)));
return 0;
}
按照这个思路发现结构体的定义不放在最顶端也会出错。但是不管放在哪里都是在他们被调用之前定义的啊?为什么会出错呢?
这可能设置到C语言的版本问题
如果按旧的c语言标准(C89)确实是,函数内部使用的变量必须定义在开头
C99标准支持随处定义变量,因此不受限制,不过由于支持新标准的C编译器太少,为了保持程序的可移植性,还是按旧标准把局部变量定义在每个函数的开头好了