2013-09-23 87 views
1

首先让我说,这个标准是必需的,是我目前使用的。ISO C90错误:声明

不管怎么说,我得到一个错误,并试图在所有移动我的FILE *块,内/外主,可执行文件之前,等等

#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); 

} 

如何摆脱这种错误的任何提示赞赏!在此先感谢

回答

1

C90不以块等语句后允许变量声明,所以你需要在顶部声明十二月一起在这里你声明ENC:

int main() 
{ 

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

这正是它。我从来没有想到这一点。谢谢您的帮助! – user28374

1

在C99,你可以等以后申报语句和内部for循环。但不是在C90中

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

gcc -std=c99 -Wall source.c 

或者

移动FILE *dec;FILE *enc;

下像这种

FILE *enc; 
FILE *dec;