目录
返回文件指针相对于起始位置的偏移量(偏移值),注意fgetc每次读完一个字符后,指针会自动移到下一个字符的位置,而在这里使用ftell应该自动带入下一个字符的位置。
long int ftell ( FILE * stream );
- int main()
- {
- int arr[10] = {0};
- FILE* pf = fopen("data.txt","r");
- if (pf == NULL)
- {
- perror("fopen");
- return 1;
- }
-
-
- //读文件,并设置变量接收读取的数据
- int ch = fgetc(pf);
- //打印读取的数据
- printf("%c\n",ch);//a
-
- //进行读取偏移
- fseek(pf,5,SEEK_CUR);
- int ch = fgetc(pf);
- printf("%c\n",ch);//g
-
- int pos = ftell(pf);
- printf("%d\n",pos);
-
- fclose(pf);
- pf = NULL;
- return 0;
-
- }
int pos = ftell(pf); printf("%d\n",pos); 将指针举例起始位置的偏移值交给了pos 。
让文件指针的位置回到文件的起始位置。
void rewind ( FILE * stream );
- int main()
- {
- int arr[10] = {0};
- FILE* pf = fopen("data.txt","r");
- if (pf == NULL)
- {
- perror("fopen");
- return 1;
- }
-
-
- //读文件,并设置变量接收读取的数据
- int ch = fgetc(pf);
- //打印读取的数据
- printf("%c\n",ch);//a
-
- //进行读取偏移
- fseek(pf,5,SEEK_CUR);
- int ch = fgetc(pf);
- printf("%c\n",ch);//g
-
- //把文件内部的指针返回到起始位置
- rewind(pf);
- ch = fgetc(pf);
- printf("%c\n",ch);
-
- fclose(pf);
- pf = NULL;
- return 0;
-
- }
因为文件内部的指针返回了起始位置,当再度使用fgetc时,读出的字符就是起始位置所占据的字符,也就是字符a