c语言fsetpos是什么,fsetpos - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在頭文件中定義int fsetpos(FILE * stream,const fpos_t * pos);
stream根據指向的值設置文件流的文件位置指示符和多字節解析狀態(如果有)pos。
除了建立新的解析狀態和位置之外,如果設置了該函數,則對該函數的調用將撤銷ungetc并清除文件結束狀態的影響。
如果發生讀取或寫入錯誤,ferror則設置流的錯誤指示符()。
參數
流-文件流進行修改崗位-指向fpos_t對象的指針,用作文件位置指示符的新值
返回值
0 一旦成功,否則非零值。
注意
在寬流中尋找非終點位置之后,對任何輸出函數的下一次調用可能會使文件的其余部分不確定,例如通過輸出不同長度的多字節序列。
例
帶有錯誤檢查的fsetpos。
#include?#include?
int?main(void){????/*?Prepare?an?array?of?f-p?values.?*/
#define?SIZE?5
double?A[SIZE]?=?{1.,2.,3.,4.,5.};????/*?Write?array?to?a?file.?*/
FILE?*?fp?=?fopen("test.bin",?"wb");????fwrite(A,sizeof(double),SIZE,fp);????fclose?(fp);
/*?Read?the?f-p?values?into?array?B.?*/
double?B[SIZE];
fp?=?fopen("test.bin","rb");
fpos_t?pos;????if?(fgetpos(fp,&pos)?!=?0)??????/*?current?position:?start?of?file?*/????{???????perror("fgetpos()");???????fprintf(stderr,"fgetpos()?failed?in?file?%s?at?line?#?%d\n",?__FILE__,__LINE__-3);???????exit(EXIT_FAILURE);????}
int?ret_code?=?fread(B,sizeof(double),1,fp);???/*?read?one?f-p?value?*/????/*?current?position:?after?reading?one?f-p?value?*/????printf("%.1f\n",?B[0]);???/*?print?one?f-p?value?*/
if?(fsetpos(fp,&pos)?!=?0)???/*?reset?current?position?to?start?of?file?*/????{???????if?(ferror(fp))???????{??????????perror("fsetpos()");??????????fprintf(stderr,"fsetpos()?failed?in?file?%s?at?line?#?%d\n",?__FILE__,__LINE__-5);??????????exit(EXIT_FAILURE);???????}????}
ret_code?=?fread(B,sizeof(double),1,fp);???/*?reread?first?f-p?value?*/????printf("%.1f\n",?B[0]);????????????????????/*?print?one?f-p?value????*/????fclose(fp);
return?EXIT_SUCCESS;?}
輸出:
1.01.0
參考
C11標準(ISO / IEC 9899:2011):7.21.9.3 fsetpos函數(p:337)
C99標準(ISO / IEC 9899:1999):7.19.9.3 fsetpos函數(p:303)
C89 / C90標準(ISO / IEC 9899:1990):4.9.9.3 fsetpos函數
總結
以上是生活随笔為你收集整理的c语言fsetpos是什么,fsetpos - [ C语言中文开发手册 ] - 在线原生手册 - php中文网的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言标量变量是什么,C语言中的结构和联
- 下一篇: 如何通过c语言获取ipv6邻居表,急求在