a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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);}

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

圖片精選

主站蜘蛛池模板: 涩涩久久 | 国内精品久久久久久久影视蜜臀 | 一区二区三区精品视频 | 成人福利在线观看 | 日韩精品一区二区三区视频播放 | 久久久亚洲一区 | 欧美精品一区二区视频 | 国产自在现线2019 | 亚洲日本乱码在线观看 | 黄色一级视频 | 国产91亚洲精品 | 亚洲日韩欧美一区二区在线 | 亚洲精品自拍 | 亚洲情网站 | 欧美日韩一区二区不卡 | 狠狠操操 | 一区二区三区日本 | 天天做天天看 | 一区二区三区在线播放视频 | 国产一区二区三区精品在线 | 欧美另类一区二区 | 伊人爽 | 97国产在线 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲精品久久久一区二区三区 | 色综合久久久久 | 欧美亚洲三级 | 中文字幕一区二区在线观看 | 欧美成人理论片乱 | 亚洲综合色视频在线观看 | 国产精品视频一二 | 啪一啪操一操 | 日韩成人一级片 | 精品国产免费久久久久久尖叫 | 日韩午夜精品视频 | 国产精品日产欧美久久久久 | 国产成人精品网站 | www.色.com| 精品一二三区 | 久久久久一区 | 国产精品美女久久久久久久久久久 |