解释:各个函数题主都明白吧。fseek(fp, 0L, 0);是移动指针到文件头,rewind(fp);也是,
所以程序一开始往文件里写了个a[0](fprintf(fp, "%d\n", a[0]);这句),写了个1,然后做了个循环,循环5次(i=1,2,3,4,5),每次循环先定位到文件头,再取出一个数字,(就是取出文件里的那唯一一个数字,是fseek(fp, 0L, 0);fscanf(fp, "%d", &k);这两句)存到k里,然后加上a[i],再写回文件(移动到文件头,再开始写,fseek(fp, 0L, 0);fprintf(fp, "%d\n", [i]+k);这两句,相当于从头写,覆盖已有的东西,因为是一直在增大的从一位数到两位数,每次写肯定把上次的一个数字覆盖干净了,所以写完了文件里还是一个数字)——相当于文件里一开始是a[0],被加了a[1],a[2],a[3],a[4],a[5],文件里最后就一个数21.最后四行,把数读出来,关文件,打印,所以结果是21.
说的比较简略,题主不懂的可以再问~