這次在廈門大學夏令營機試中遇到一個問題,它要求數據輸入一定要從文件中輸入,而不是從命令行中輸入。
當時我並不知道這個,所以機試我就GG了,回來之后立馬翻看了書,查了資料。現在是搞清楚了。
1 #include <stdio.h> 2 3 // 計算斐波拉契數列 4 5 int fib(int n) 6 { 7 if(n == 0 || n == 1) 8 return n; 9 else 10 return fib(n-2) + fib(n-1); 11 } 12 13 int main() 14 { 15 int n, i; 16 FILE *pf, *op; 17 pf = fopen("input.txt", "r"); 18 op = fopen("output.txt", "w"); 19 fscanf(pf, "%d", &n); 20 for(i = 0; i <= n; i++) 21 fprintf(op, "%d\n", fib(i)); 22 fclose(pf); 23 fclose(op); 24 return 0; 25 }
我這里寫了一段用遞歸求斐波拉契數列的簡短程序。
使用文件輸入就是在scanf的基礎上,在上文件指針初始化、賦值,操作,關閉指針這四個步驟。
初始化: FILE *pf
賦值:pf = fopen("input.txt", "r"); 后面的一個參數 r,w,r+等分別表示 只讀,只寫,二進制只讀 方式打開文件
操作:fscanf(pf, "%d", &n); 這里跟scanf操作類似,只是fcanf函數里多了一個 文件指針變量。
關閉: fclose(pf); 文件指針在操作完了之后需要關閉。