C 将数据输出到文本文件的问题

C 将数据输出到文本文件的问题,c,output,text-files,C,Output,Text Files,我目前正在尝试构建一个程序来计算一个值,并将这些值输出到一个文本文件中。在编译时,我收到以下错误: “ISO C90禁止混合减速和代码” 我的编译器是Quincy 2005,它将第11行(int f=10;)标记为问题: #include <stdio.h> int main() { FILE *output; output = fopen("inductor.txt","a+"); int f=10; float l, ir, realir; printf("What

我目前正在尝试构建一个程序来计算一个值,并将这些值输出到一个文本文件中。在编译时,我收到以下错误:

“ISO C90禁止混合减速和代码”

我的编译器是Quincy 2005,它将第11行(int f=10;)标记为问题:

#include <stdio.h>


int main()

{

FILE *output;
output = fopen("inductor.txt","a+");

int f=10;
float l, ir, realir;

printf("What is your inductor value (mH)\n");
scanf("%f", &l);

  while (f< 10000000){
  ir=((2*3.141)*f*l);
  realir = ir/1000;

  printf("If Frequency = %d Hz" ,f);
  printf(" Inductive reactance= %f Ohms\n",realir);

  fprintf(output, "%d Hz : %f Ohms\n ", f, realir);


 f=f*10;

 }

fclose(output);

return 0;
}
#包括
int main()
{
文件*输出;
输出=fopen(“电感.txt”,“a+”);
int f=10;
浮点数l、ir、realir;
printf(“您的电感器值(mH)是多少)\n”);
scanf(“%f”、&l);
而(f<10000000){
ir=((2*3.141)*f*l);
realir=ir/1000;
printf(“如果频率=%d Hz”,f);
printf(“感应电抗=%f Ohms\n”,realir);
fprintf(输出,“%d Hz:%f Ohms\n”,f,realir);
f=f*10;
}
fclose(输出);
返回0;
}

令人烦恼的是,更改编译器不是一个选项。

Move
output=fopen(“电感.txt”,“a+”)向下至其他变量声明下方。您必须首先声明所有变量,然后使用它们。

Move
output=fopen(“电感.txt”,“a+”)向下至其他变量声明下方。您必须首先声明所有变量,然后使用它们。

我认为这是说您需要先声明所有变量,然后编写代码

例如:


我相信这是说你需要先声明所有变量,然后编写代码

例如:


根据前面的回答,有两种方法可以否定这一点,因为ISO C90不允许混合变量声明和代码。 已经提到了一种方法:按照建议移动变量声明

FILE *output;
int f=10;
float l, ir, realir;
output = fopen("inductor.txt","a+");
// More code
还有另一种方法。根据ISO C90,只能在块打开后在代码内声明变量
{
。由于您可以随时随意引入代码块,如果不想对代码进行太多修改,您只需启动一个块并将代码放入其中即可。请注意,以这种方式声明的变量仅在包含它们的块内有效。我强烈推荐第一个选项

FILE *output;
output = fopen("inductor.txt","a+");
{
int f=10;
float l, ir, realir;
// More code on this variables.
}
// Variables declared in the block previously will not be valid here.

根据前面的回答,有两种方法可以否定这一点,因为ISO C90不允许混合变量声明和代码。 已经提到了一种方法:按照建议移动变量声明

FILE *output;
int f=10;
float l, ir, realir;
output = fopen("inductor.txt","a+");
// More code
还有另一种方法。根据ISO C90,只有在块打开
{
。由于您可以随时随意引入代码块,如果不想对代码进行太多修改,您只需启动一个块并将代码放入其中即可。请注意,以这种方式声明的变量仅在包含它们的块内有效。我强烈推荐第一个选项

FILE *output;
output = fopen("inductor.txt","a+");
{
int f=10;
float l, ir, realir;
// More code on this variables.
}
// Variables declared in the block previously will not be valid here.

您是否不清楚错误消息?它确切地说明了问题所在。您说您不能更改编译器,但听起来您的编译器确实支持混合声明和代码,您只需将其切换到另一种模式(可能是C99)。注意:“减速”!=“声明”。您是否不清楚错误消息?它确切地说明了问题所在。您说您不能更改编译器,但听起来您的编译器确实支持混合声明和代码,您只需将其切换到另一种模式(可能是C99)。注意:“减速”!=“声明”。在选项2中,变量仅在
{}
块内有效。因此它将不起作用。是的,谢谢你。我编辑了我的问题以反映这一点。在选项2中,变量仅在
{}
块内有效。因此它将不起作用。是的,谢谢你。我编辑了我的问题以反映这一点。