国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言中的setlinebuf()、utmpname()、rewind函數使用

2020-01-26 14:55:39
字體:
來源:轉載
供稿:網友

C語言setlinebuf()函數:設置文件流為線性緩沖區
頭文件:

#include <stdio.h>

定義函數:

void setlinebuf(FILE * stream);

函數說明:setlinebuf()用來設置文件流以換行為依據的無緩沖IO. 相當于調用:setvbuf(stream, (char*)NULL, _IOLBF, 0);請參考setvbuf().

C語言utmpname()函數:設置文件路徑
頭文件:

#include <utmp.h>

定義函數:

void utmpname(const char * file);

函數說明:utmpname()用來設置utmp 文件的路徑, 以提供utmp 相關函數的存取路徑. 如果沒有使用utmpname()則默認utmp 文件路徑為/var/run/utmp。

C語言rewind()函數:將文件指針重新指向文件開頭
頭文件:

 #include <stdio.h>

rewind()函數用于將文件指針重新指向文件的開頭,同時清除和文件流相關的錯誤和eof標記,相當于調用fseek(stream, 0, SEEK_SET),其原型如下:

  void rewind(FILE * stream);

【參數】stream為以打開文件的指針。

注意:準確的說,這里的指針不是文件指針stream,而是文件內部的位置指針,隨著對文件的讀寫文件的位置指針(指向當前讀寫字節)向后移動。而文件指針是指向整個文件,如果不重新賦值文件指針不會改變。

文件指針FILE *stream中,包含一個讀寫位置指針char *_nextc,它指向下一次文件讀寫的位置。其結構如下:

typedef struct{  int _fd; // 文件號  int _cleft; // 緩沖區中剩下的字節數  int _mode; // 文件操作模式  char * _nextc; // 下一個字節的位置  char * _buff; // 文件緩沖區位置}FILE;

每當進行一次讀寫后,該指針自動指向下一次讀寫的位置。當文件剛打開或創建時,該指針指向文件的開始位置。可以用函數ftell()獲得當前的位置指針,也可以用rewind()/fseek()函數改變位置指針,使其指向需要讀寫的位置。

【實例】讀取文件的數據后再回到開頭重新讀取。

#include<iostream.h>#include<stdio.h>void main(void){  FILE* stream;  long l;  float fp;  char s[81];  char c;  stream = fopen("fscanf.txt","w+");  if(stream == NULL)/*打開文件失敗*/  {    printf("the file is opeaned error!/n");  }  else/*成功則輸出信息*/  {    fprintf(stream,"%s %ld %f %c","a_string",6500,3.1415,'x');    fseek(stream,0L,SEEK_SET);      /*定位文件讀寫指針*/    fscanf(stream,"%s",s);    printf("%ld/n",ftell(stream));    fscanf(stream,"%ld",&l);    printf("%ld/n",ftell(stream));    fscanf(stream,"%f",&fp);    printf("%ld/n",ftell(stream));    fscanf(stream," %c",&c);    printf("%ld/n",ftell(stream));    rewind(stream);/*指向文件開頭*/    fscanf(stream,"%s",s);    printf("%s/n",s);    fclose(stream);/*關閉流*/  }}

運行結果:

8132224a_string

程序先創建一個文件寫入一些數據,然后使用feeek函數定位文件指針到文件開頭逐個讀取數據,讀取完畢后使用rewind函數將文件的讀/寫指針重新定位到文件的開頭,再次讀取時發現讀取的是開頭的字符a_string。

又如,把一個文件的內容顯示在屏幕上,并同時復制到另一個文件。

#include "stdio.h"void main(){  FILE *fp1, *fp2;  fp1 = fopen("file1.c", "r"); // 源文件  fp2 = fopen("file2.c", "w"); // 復制到file2.c  while(!feof(fp1)) putchar(fgetc(fp1)); // 顯示到屏幕上  rewind(fp1);  // fp回到開始位置  while(!feof(fp1)) fputc(fgetc(fp1), fp2);  fclose(fp1);  fclose(fp2);}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 梅河口市| 贡觉县| 华池县| 新宁县| 泽州县| 仪陇县| 崇明县| 郧西县| 凌源市| 钟祥市| 临沂市| 五指山市| 大渡口区| 德化县| 准格尔旗| 镇雄县| 枣庄市| 民乐县| 黄骅市| 罗江县| 增城市| 永定县| 平潭县| 泌阳县| 怀化市| 隆林| 延川县| 浠水县| 乌拉特中旗| 湖南省| 临清市| 北川| 垦利县| 祥云县| 象山县| 凤翔县| 乡城县| 邓州市| 韶关市| 双峰县| 浦县|