簡體   English   中英

ISO C90錯誤:聲明

[英]ISO C90 Error: Declarations

首先,我要說這個標准是必需的,也是我目前必須使用的標准。

無論如何,我遇到一個錯誤,並嘗試將我的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);

}

任何有關如何擺脫這個錯誤的提示,不勝感激! 提前致謝

C90不允許在塊中的其他語句之后聲明變量,因此您需要在聲明enc的頂部和頂部聲明dec:

int main()
{

    /* Open encrypted.txt for reading */
   FILE *enc, *dec;
   ...
}

在C99中,您可以在其他語句之后並在for循環中聲明。 但不是在C90中

如果使用gcc,請使用-std = c99選項來避免此錯誤。

 gcc -std=c99 -Wall source.c 

要么

移動FILE *dec; FILE *enc;的下方FILE *enc;

像這樣

 FILE *enc;
 FILE *dec;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM