【问题标题】:ISO C90 Error: DeclarationsISO C90 错误:声明
【发布时间】:2013-09-23 04:05:09
【问题描述】:

首先让我说这个标准是必需的,也是我目前必须使用的。

无论如何,我遇到了一个错误并尝试将我的 FILE * 块全部移动,内部/外部 main,在可执行文件之前等。

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

/* Initialize vars */
char c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12;

int main()
{

    /* Open encrypted.txt for reading */
FILE *enc;
enc = fopen("encrypted.txt", "r");

    /* Retrieve individual characters, displace by 4 letters (decryption method) */
c1 = (getc(enc))-4;
c2 = (getc(enc))-4;
c3 = (getc(enc))-4;
c4 = (getc(enc))-4;
c5 = (getc(enc))-4;
c6 = (getc(enc))-4;
c7 = (getc(enc))-4;
c8 = (getc(enc))-4;
c9 = (getc(enc))-4;
c10 = (getc(enc))-4;
c11 = (getc(enc))-4;
c12 = (getc(enc))-4;

    /* Display resulting decrypted message */
printf("%c%c%c%c%c%c%c%c%c%c%c%c", (char)c1, (char)c2, (char)c3, (char)c4, (char)c5, (char)c6, (char)c7, (char)c8, (char)c9, (char)c10, (char)c11, (char)c12);

    /* Write decrypted message to new file named "decrypted" */
FILE *dec;
dec = fopen("decrypted", "w");

fprintf(dec,"%c%c%c%c%c%c%c%c%c%c%c%c", (char)c1, (char)c2, (char)c3, (char)c4, (char)c5, (char)c6, (char)c7, (char)c8, (char)c9, (char)c10, (char)c11, (char)c12);

    /* Close files */
fclose(enc);
fclose(dec);

}

感谢任何有关如何摆脱此错误的提示!提前致谢

【问题讨论】:

    标签: c declaration


    【解决方案1】:

    C90 不允许在块中的其他语句之后声明变量,因此您需要在声明 enc 的顶部旁边声明 dec:

    int main()
    {
    
        /* Open encrypted.txt for reading */
       FILE *enc, *dec;
       ...
    }
    

    【讨论】:

    • 就是这样。我什至从来没有想过这一点。感谢您的帮助!
    【解决方案2】:

    在 C99 中,您可以在其他语句之后和 for 循环内声明。但在 C90 中没有

    如果您使用 gcc ,请使用 -std=c99 选项来避免此错误。

     gcc -std=c99 -Wall source.c 
    

    或者

    FILE *dec;移动到FILE *enc;的下方

    这样

     FILE *enc;
     FILE *dec;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多