亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言文件讀寫(xiě)操作介紹與簡(jiǎn)單示例

 更新時(shí)間:2021年01月12日 11:04:04   作者:風(fēng)知我意否  
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言文件讀寫(xiě)操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

文件的打開(kāi)函數(shù)fopen()

文件的打開(kāi)操作表示將給用戶(hù)指定的文件在內(nèi)存分配一個(gè)FILE結(jié)構(gòu)區(qū),并將該結(jié)構(gòu)的指針?lè)祷亟o用戶(hù)程序,以后用戶(hù)程序就可用此FILE指針來(lái)實(shí)現(xiàn)對(duì)指定文件的存取操作了。當(dāng)使用打開(kāi)函數(shù)時(shí),必須給出文件名、文件操作方式(讀、寫(xiě)或讀寫(xiě)),如果該文件名不存在,就意味著建立(只對(duì)寫(xiě)文件而言,對(duì)讀文件則出錯(cuò)),并將文件指針指向文件開(kāi)頭。若已有一個(gè)同名文件存在,則刪除該文件,若無(wú)同名文件,則建立該文件,并將文件指針指向文件開(kāi)頭。

fopen(char *filename,char *type);

其中filename是要打開(kāi)文件的文件名指針,一般用雙引號(hào)括起來(lái)的文件名表示,也可使用雙反斜杠隔開(kāi)的路徑名。而type參數(shù)表示了對(duì)打開(kāi)文件的操作方式。其可采用的操作方式如下: 方式 含義 “r” 打開(kāi),只讀; “w” 打開(kāi),文件指針指到頭,只寫(xiě); “a” 打開(kāi),指向文件尾,在已存在文件中追加; “rb” 打開(kāi)一個(gè)二進(jìn)制文件,只讀; “wb” 打開(kāi)一個(gè)二進(jìn)制文件,只寫(xiě); “ab” 打開(kāi)一個(gè)二進(jìn)制文件,進(jìn)行追加 ;“r+” 以讀/寫(xiě)方式打開(kāi)一個(gè)已存在的文件; “w+” 以讀/寫(xiě)方式建立一個(gè)新的文本文件 ;“a+” 以讀/寫(xiě)方式打開(kāi)一個(gè)文件文件進(jìn)行追加 ;“rb+” 以讀/寫(xiě)方式打開(kāi)一個(gè)二進(jìn)制文件; “wb+” 以讀/寫(xiě)方式建立一個(gè)新的二進(jìn)制文件 ;“ab+” 以讀/寫(xiě)方式打開(kāi)一個(gè)二進(jìn)制文件進(jìn)行追加 ;當(dāng)用fopen()成功的打開(kāi)一個(gè)文件時(shí),該函數(shù)將返回一個(gè)FILE指針,如果文件打開(kāi)失敗,將返回一個(gè)NULL指針。

關(guān)閉文件函數(shù)fclose()

文件操作完成后,必須要用fclose()函數(shù)進(jìn)行關(guān)閉,這是因?yàn)閷?duì)打開(kāi)的文件進(jìn)行寫(xiě)入時(shí),若文件緩沖區(qū)的空間未被寫(xiě)入的內(nèi)容填滿(mǎn),這些內(nèi)容不會(huì)寫(xiě)到打開(kāi)的文件中去而丟失。只有對(duì)打開(kāi)的文件進(jìn)行關(guān)閉操作時(shí),停留在文件緩沖區(qū)的內(nèi)容才能寫(xiě)到該文件中去,從而使文件完整。再者一旦關(guān)閉了文件,該文件對(duì)應(yīng)的FILE結(jié)構(gòu)將被釋放,從而使關(guān)閉的文件得到保護(hù),因?yàn)檫@時(shí)對(duì)該文件的存取操作將不會(huì)進(jìn)行。文件的關(guān)閉也意味著釋放了該文件的緩沖區(qū)。

int fclose(FILE *stream);

它表示該函數(shù)將關(guān)閉FILE指針對(duì)應(yīng)的文件,并返回一個(gè)整數(shù)值。若成功地關(guān)閉了文件,則返回一個(gè)0值,否則返回一個(gè)非0值。

int read(int handle, void *buf, int count);

read()函數(shù)從handle(文件描述字)相連的文件中, 讀取count個(gè)字節(jié)放到buf所指的緩沖區(qū)中, 返回值為實(shí)際所讀字節(jié)數(shù), 返回-1表示出錯(cuò)。返回0 表示文件結(jié)束。

write()函數(shù)的調(diào)用格式為:

int write(int handle, void *buf, int count);

write()函數(shù)把count個(gè)字節(jié)從buf指向的緩沖區(qū)寫(xiě)入與handle相連的文件中, 返回值為實(shí)際寫(xiě)入的字節(jié)數(shù)。

size_t fread( void *buffer, size_t size, size_t count, FILE *stream )

buffer 是讀取的數(shù)據(jù)存放的內(nèi)存的指針(可以是數(shù)組,也可以是新開(kāi)辟的空間,buffer就是一個(gè)索引)

size 是每次讀取的字節(jié)數(shù)

count 是讀取次數(shù)

stream 是要讀取的文件的指針

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

其中,ptr:指向保存數(shù)據(jù)的指針;size:每個(gè)數(shù)據(jù)類(lèi)型的大??;count:數(shù)據(jù)的個(gè)數(shù);stream:文件指針 ; 函數(shù)返回寫(xiě)入數(shù)據(jù)的個(gè)數(shù)。

fseek

函數(shù)名: fseek

功 能: 重定位流上的文件指針

用 法: int fseek(FILE *stream, long offset, int fromwhere);

描 述: 函數(shù)設(shè)置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準(zhǔn),偏移offset個(gè)字 節(jié)的位置。

如果執(zhí)行失敗(比如offset超過(guò)文件自身大小),則不改變stream指向的位置。

返回值: 成功,返回0,否則返回其他值。

fromwhere有三個(gè)可選值:SEEK_SET 開(kāi)始 SEEK_CUR現(xiàn)在指針?biāo)傅奈恢?SEEK_END末尾

ftell

用于得到二進(jìn)制文件位置指針當(dāng)前位置相對(duì)于文件首的偏移字節(jié)數(shù)。在隨機(jī)方式存取文件時(shí),由于文件位置頻繁的前后移動(dòng),程序不容易確定文件的當(dāng)前位置。

long ftell(FILE *stream);

int fprintf(FILE *stream,char *format,variable-list)
int fscanf(FILE *stream,char *format,variable-list)

fprintf()則是向流指針指向的文件輸出;fscanf()是從文件輸入

簡(jiǎn)單的例子:先讀取文件內(nèi)容,再向文件寫(xiě)數(shù)據(jù)

#include "pch.h"
#include <iostream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;
int main()
{
 const char *filename ="test.txt";
 FILE *fp;
 //以追加讀寫(xiě)的方式打開(kāi)文件
 fopen_s(&fp,"test.txt","ab+");
 if (!fp) {
 printf("open file %s failed!", filename);
 }
 //統(tǒng)計(jì)文件大小
 fseek(fp,0,SEEK_END); 
 int len = ftell(fp);
 //若使用fseek,ftell統(tǒng)計(jì)文件大小,那么在獲得大小后要將指針移回原來(lái)的位置,因?yàn)閒seek會(huì)改變指針的位置
 fseek(fp,0,0); 
 //保存從文件中讀去的數(shù)據(jù)
 char buf[10000] = {0};
 //讀取文件
 fread(buf,len,1,fp);
 //關(guān)閉
 fclose(fp); 
 //重新打開(kāi),不然會(huì)寫(xiě)入失敗,不知道為什么
 fopen_s(&fp, "test.txt", "ab+"); 
 cout << buf << endl;
 //保存寫(xiě)入文件的內(nèi)容
 char writebuf[1024];
 char ch = 0;
 int i = 0;
 //讀取輸入字符,以換行符結(jié)束
 while ((ch=getchar())!='\n') {
 writebuf[i++] = ch;
 }
 writebuf[i++] = '\n';
 writebuf[i++] = '\0';
 //向文件末尾添加數(shù)據(jù)
 int flen=fwrite(writebuf,i,1,fp);
 //關(guān)閉數(shù)據(jù)
 fclose(fp);
 return 0;
}

總結(jié)

到此這篇關(guān)于C語(yǔ)言文件讀寫(xiě)操作介紹與簡(jiǎn)單示例的文章就介紹到這了,更多相關(guān)c語(yǔ)言文件讀寫(xiě)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++11異步與通信之std::async的使用

    C++11異步與通信之std::async的使用

    std::async 異步運(yùn)行一個(gè)函數(shù),將返回值保存在std::future中,本文主要介紹了C++11異步與通信之std::async的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • C++ Boost Coroutine使用協(xié)程詳解

    C++ Boost Coroutine使用協(xié)程詳解

    通過(guò)Boost.Coroutine,可以在C++中使用協(xié)程。協(xié)程是其他編程語(yǔ)言的一個(gè)特性,通常使用關(guān)鍵字yield來(lái)表示協(xié)程。在這些編程語(yǔ)言中,yield可以像return一樣使用
    2022-11-11
  • C++深入講解哈夫曼樹(shù)

    C++深入講解哈夫曼樹(shù)

    給定N個(gè)權(quán)值作為N個(gè)葉子結(jié)點(diǎn),構(gòu)造一棵二叉樹(shù),若該樹(shù)的帶權(quán)路徑長(zhǎng)度達(dá)到最小,稱(chēng)這樣的二叉樹(shù)為最優(yōu)二叉樹(shù),也稱(chēng)為哈夫曼樹(shù)(Huffman Tree)。哈夫曼樹(shù)是帶權(quán)路徑長(zhǎng)度最短的樹(shù),權(quán)值較大的結(jié)點(diǎn)離根較近
    2022-05-05
  • 詳解C語(yǔ)言解決經(jīng)典問(wèn)題之兔子產(chǎn)子

    詳解C語(yǔ)言解決經(jīng)典問(wèn)題之兔子產(chǎn)子

    有一對(duì)兔子,從出生后的第 3 個(gè)月起每個(gè)月都生一對(duì)兔子。小兔子長(zhǎng)到第 3 個(gè)月后每個(gè)月又生一對(duì)兔子,假設(shè)所有的兔子都不死,問(wèn) 30 個(gè)月內(nèi)每個(gè)月的兔子總數(shù)為多少?本文將用C語(yǔ)言解決這一經(jīng)典問(wèn)題,需要的可以參考一下
    2022-03-03
  • C語(yǔ)言 實(shí)現(xiàn)N階乘的程序代碼

    C語(yǔ)言 實(shí)現(xiàn)N階乘的程序代碼

    本篇文章是對(duì)c語(yǔ)言中實(shí)現(xiàn)N階乘的程序代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++詳解使用floor&ceil&round實(shí)現(xiàn)保留小數(shù)點(diǎn)后兩位

    C++詳解使用floor&ceil&round實(shí)現(xiàn)保留小數(shù)點(diǎn)后兩位

    這篇文章主要介紹了C++使用floor&ceil&round實(shí)現(xiàn)保留小數(shù)點(diǎn)后兩位的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • c語(yǔ)言中static和extern的用法詳細(xì)解析

    c語(yǔ)言中static和extern的用法詳細(xì)解析

    以下是對(duì)c語(yǔ)言中static和extern的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-09-09
  • c++迭代器失效的情況匯總

    c++迭代器失效的情況匯總

    這篇文章主要介紹了C++迭代器失效的幾種情況總結(jié),文中代碼非常詳細(xì),幫助大家更好的了解學(xué)習(xí),感興趣的朋友可以參考下
    2020-06-06
  • C++中std::conditional的使用說(shuō)明

    C++中std::conditional的使用說(shuō)明

    這篇文章主要介紹了C++中std::conditional的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語(yǔ)言中二級(jí)指針的實(shí)例詳解

    C語(yǔ)言中二級(jí)指針的實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言中二級(jí)指針的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家掌握理解二級(jí)指針的知識(shí),需要的朋友可以參考下
    2017-10-10

最新評(píng)論