slrps@linux-vnbn:~/BeginningC/chapter12> gcc Program12.1.c -o Program12.1
Program12.1.c: 在函數‘main’中:
Program12.1.c:24: 錯誤:在 C99 模式之外使用‘for’循環初始化聲明
#include <stdio.h> #include <stdlib.h> #include <string.h> const int LENGTH = 80; int main(void) { char mystr[LENGTH]; int lstr = 0; int mychar = 0; FILE *pfile = NULL; char *filename = "myfile.txt"; printf("n\Enter an intersting string of less than 80 characters:\n"); fgets(mystr, LENGTH, stdin); if (!(pfile = fopen(filename, "w"))) { printf("Error opening %s for writing.", filename); exit(1); } lstr = strlen(mystr); for (int i = lstr - 1; i >= 0; i--) { fputc(mystr[i], pfile); } fclose(pfile); if (!(pfile = fopen(filename, "r"))) { printf("Error opening %s for reading.", filename); exit(2); } while ((mychar = fgetc(pfile)) != EOF) putchar(mychar); putchar('\n'); fclose(pfile); return 0; }
錯誤處理:
C99 允許在for語句的 “表達式1 ”中定義並初始變量, gcc4 編譯c語言的默認標准是C89, 編譯C99程序需加參數 “–-std=c99” ;使用
gcc Program12.1.c -o Program12.1 --std=c99就解決了。