这次在厦门大学夏令营机试中遇到一个问题,它要求数据输入一定要从文件中输入,而不是从命令行中输入。
当时我并不知道这个,所以机试我就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 ", 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); 文件指针在操作完了之后需要关闭。