日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 工業(yè)控制 > 電子設計自動化
[導讀]作者:王姍姍,華清遠見嵌入式學院講師。 在標準IO中,對于文件的讀寫無非三種方式: (1) 每次一個字符的I / O。 (2) 每次一行的I / O。 (3) 直接I / O。 似乎這些函數(shù)看起來很簡單,但只有理解了這些函數(shù),你才知道該

作者:王姍姍,華清遠見嵌入式學院講師。

在標準IO中,對于文件的讀寫無非三種方式:

(1) 每次一個字符的I / O。

(2) 每次一行的I / O。

(3) 直接I / O。

似乎這些函數(shù)看起來很簡單,但只有理解了這些函數(shù),你才知道該如何使用,例如怎樣來判斷讀取的文件是否結束,怎樣來統(tǒng)計文件的行數(shù),等等。

下面先來回顧下讀取文件的三種方式,然后再舉例看下怎樣使用。

一次讀或寫一個字符,使用getc、fgetc或getchar。如果流是帶緩存的,則標準I / O函數(shù)處理所有緩存。三個函數(shù)原型如下:

#include <stdio.h>

int getc(FILE *fp) ;

int fgetc(FILE *fp) ;

int getchar(void);

三個函數(shù)的返回:若成功則為下一個字符,若已處文件尾端或出錯則為E O F。強調(diào)的是不管是出錯還是到達文件尾端,這三個函數(shù)都返回同樣的值。為了區(qū)分這兩種不同的情況,必須調(diào)用ferror()或feof()。

一次讀或寫一行,使用f g e t s和gets。兩個函數(shù)原型如下:

#include <stdio.h>

Char *gets(char *s) ;

Char *fgets(char *s,int size,FILE *steam)

兩個函數(shù)返回:若成功則為buf,若已處文件尾端或出錯則為null。這兩個函數(shù)都指定了緩存地址,讀入的行將送入其中。gets()從標準輸入讀,而fgets()則從指定的流讀。

對于fgets(),必須指定緩存的長度為n。此函數(shù)一直讀到下一個新行符為止,但是不超過n-1個字符,讀入的字符被送入緩存,該緩存以null字符結尾。如若該行,包括最后一個新行符的字符數(shù)超過n-1,則只返回一個不完整的行,而且緩存總是以null字符結尾。對fgets()的下一次調(diào)用會繼續(xù)讀該行。

直接I / O使用的是fread。每次I / O操作讀某種數(shù)量的對象,而每個對象具有指定的長度。這個函數(shù)常用于從二進制文件中讀一個結構。原型如下:

int fread(void * ptr,int objsize,int objnum,FILE *fp);

這個函數(shù)返回:讀的對象數(shù)。fputs()在遇到null字節(jié)時就停止,而在結構中可能含有null字節(jié),所以不能使用每次一行函數(shù)實現(xiàn)這種要求,而fread能使我們一次讀整個結構。

下面看下如何利用上面提到的標準IO讀函數(shù)來判斷你讀取的文件是否結束以及如何來統(tǒng)計文件的行數(shù)。

1、判斷文件結束有三種方式:

a) 當用fgetc(src)返回的int值為EOF時,讀到文件的末尾

b) 當用fgets(p,1024,src)返回的指針為NULL時,讀到文件的末尾

c) 當用fread(s,1,20,src)返回的個數(shù)小于20時,讀到文件的末尾

實現(xiàn)起來簡單明了,就不再細說。

2、統(tǒng)計文件的行數(shù)

a) 當用fgetc(src)返回的int值為’n’時行數(shù)加一

b) 當用fgets(p,1024,src)返回的指針不為NULL時,你的緩沖即提供的p[1024]已經(jīng)讀到字符,這個時候實際上有兩種情況,一種你讀進來的字符長度小于1024個,這個時候一行結束,行數(shù)加一,另一種比較復雜,由于受自己定義的緩沖的限制,一次只能讀進來1023個,如果恰好這個時候你剛好讀完一行,那p[]1022]里存放的一定’n’,如果不是,那你的一行還一定沒有結束了。

程序如下:

Int n;

A) While(fgetc(src)==’n’)

N++;

B) while(fgets(p,1024,src)!=NULL)

{

If(strlen(p)<1024||p[1022]==’n’)

N++;

}
“本文由華清遠見http://www.embedu.org/index.htm提供”



來源:華清遠見0次

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

為了提升設計效率和運行安全性 ,對DL/T 834—2023《火力發(fā)電廠汽輪機防進水和冷蒸汽導則》與DL/T 834—2003 《火力發(fā)電廠汽輪機防進水和冷蒸汽導則》的設計、運行和檢驗及維護要求進行了對比分析 , 總...

關鍵字: 標準 疏水 冷蒸汽 發(fā)電廠

電磁兼容(EMC)是指在同一電磁環(huán)境中,不同設備或系統(tǒng)能夠正常工作且互不干擾的狀態(tài)。在現(xiàn)代電子和通信領域,EMC是一個至關重要的概念,它不僅影響設備的性能,還關系到整個系統(tǒng)的穩(wěn)定性和安全性。為了確保設備的EMC,各國都制...

關鍵字: 電磁兼容 EMC 標準

北京——2024年10月29日 亞馬遜云科技日前宣布,通過與光環(huán)新網(wǎng)與西云數(shù)據(jù)的緊密合作,在亞馬遜云科技(北京)區(qū)域和(寧夏)區(qū)域推出Amazon Lambda SnapStart功能,將基于Java Lambda函數(shù)的...

關鍵字: 函數(shù) 數(shù)據(jù)處理

北京2024年10月29日 /美通社/ -- 亞馬遜云科技日前宣布,通過與光環(huán)新網(wǎng)與西云數(shù)據(jù)的緊密合作,在亞馬遜云科技(北京)區(qū)域和(寧夏)區(qū)域推出Amazon Lambda SnapStart功能,將基于Java La...

關鍵字: START 亞馬遜 PS 函數(shù)

無線充電技術,作為現(xiàn)代科技領域的一項創(chuàng)新,正逐步改變著我們的生活方式。從智能手機到電動汽車,無線充電的應用場景日益廣泛,為用戶提供了前所未有的便捷性。然而,盡管無線充電技術發(fā)展迅速,其在標準和能效方面仍面臨諸多瓶頸,這些...

關鍵字: 無線充電 能效 標準

關于數(shù)據(jù)分析與可視化,以下介紹Pandas讀取數(shù)據(jù)以及保存數(shù)據(jù)的方法,畢竟我們很多時候需要讀取各種形式的數(shù)據(jù),以及將我們需要將所做的統(tǒng)計分析保存成特定的格式。

關鍵字: 函數(shù) Panda

深圳2024年8月15日 /美通社/ -- 近日,知名量化交易平臺水母量化正式推出了突破性的輪動交易策略回測功能,目前已進入公測階段。該功能實現(xiàn)了從策略設計、歷史回測到實盤自動交易一體化流程,幫用戶解決了策略驗證難、交易...

關鍵字: 編程 仿真 函數(shù) 開源

隨著無人機的普及,越來越多的人開始使用無人機進行各種飛行任務,但是不當?shù)氖褂脮o公共安全和社會秩序帶來潛在的風險,因此對于無人機使用的規(guī)定也變得越來越嚴格。本文將介紹無人機使用的標準和規(guī)定,以幫助大家正確使用無人機。

關鍵字: 無人機 標準 UAV

智能家居作為新興領域,逐漸走入了人們的生活。智能家居系統(tǒng)是利用先進的計算機技術、網(wǎng)絡通訊技術、智能云端控制、綜合布線技術、醫(yī)療電子技術依照人體工程學原理,融合個性需求,將與家居生活有關的各個子系統(tǒng)如安防、燈光控制、窗簾控...

關鍵字: 智能家居 標準

Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數(shù)據(jù)結構,還能簡單有效地面向對象編程。

關鍵字: python 函數(shù) 對象編程
關閉