日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

统计文件中字符个数

發(fā)布時間:2025/5/22 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 统计文件中字符个数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所謂“文件”是指一組相關(guān)數(shù)據(jù)的有序集合。這個數(shù)據(jù)集有一個名稱
叫做文件名。文件通常是駐留在外部介質(zhì)上的,在使用的時候才調(diào)
入內(nèi)存中。

就文件的分類,有很多種分類方式,在這里我們看一下文件編碼方式。
根據(jù)文件的編碼方式,文件可以分為ASCII碼文件和二進制文件。
ASCII文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應(yīng)一個
字節(jié),用于存放對應(yīng)的ASCII碼。例如,數(shù)字5678的存儲形式為:
ASCII碼: 00110101 00110110 00110111 00111000
十進制碼: 5 6 7 8
共占用4個字節(jié)。ASCII碼文件可在屏幕上按照字符顯示。

二進制文件是按照二進制的編碼方式來存放文件的。例如,數(shù)字5678的
存儲形式為00010110 00101110,只占兩個字節(jié),二進制文件雖然可以在屏幕上顯示,但是其內(nèi)容無法讀懂。C語言處理這些文件的時候,并不區(qū)分類型,都看成是字符流,按字節(jié)進行處理。

文件指針在C語言中用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對他所指的文件進行各種操作。定義文件指針的一般形式為”FILE “指針變量標識符。其中FILE應(yīng)為大寫,他實際上是由系統(tǒng)定義的一個結(jié)構(gòu),該結(jié)構(gòu)中含有文件名,文件狀態(tài)和文件當前位置等信息。在編寫源程序的時候,不必關(guān)心FILE結(jié)構(gòu)的細節(jié)。例如”FILE fp”表示fp是指向FILE結(jié)構(gòu)的指針變量,通過fp即可找到存放某個文件信息的結(jié)構(gòu)變量,然后按照結(jié)構(gòu)變量提供的信息找到該文件,實施對文件的操作。

在C語言中,文件操作都是由庫函數(shù)來完成的。文件操作主要有打開,讀寫和關(guān)閉等。

1:文件打開函數(shù)fopen

fopen函數(shù)用來打開一個文件,其調(diào)用的一般形式為:
文件指針名 = fopen(文件名,使用文件方式)
其中,“文件指針名”必須被說明為FILE類型的指針變量,“文件名”是被打開文件的文件名。
“使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串數(shù)組。
例如:
FILE fp;
fp = fopen(“file.a”,”r”);
//他的意思是在當前目錄下打開文件file.a,只允許進行“讀”操作,并且使得fp指向該文件
使用文件的方式一共有12種。

對于文件使用方式有以下幾點說明:

文件使用方式由r,w,a,t,b,+共6個字符組合成,各個字符的含義是:r(read)讀,w(write)寫,
a(append)追加,t(text)文本文件,可省略不寫;b(binary)二進制文件;”+”讀和寫
用r打開一個文件的時候,該文件必須已經(jīng)存在,且只能從該文件讀出
用w打開的文件只能向文件中寫入,若打開的文件不存在,則以指定的文件名建立
該文件,如打開的文件已經(jīng)存在,則將該文件刪去,從新建立一個文件
若要向一個已經(jīng)存在的文件追加新的信息,只能用a方式打開文件。但此時該文件必須是
存在的,否則將會出錯。

在打開一個文件的時候,如果出錯,fopen將會返回一個空指針值NULL。在程序中可以
用這一信息來判別是否完成打開文件的工作,并做相應(yīng)的處理。舉個例子:

if((fp=fopen(“file.a”,”rb”)) == NULL)
{
printf(“\nerror no open file.a!”);
getch();
exit(1);
}

2:關(guān)閉文件

調(diào)用的一般形式是:
fclose(文件指針);
正常完成關(guān)閉文件操作的時候,fclose函數(shù)返回值為0,如返回非零值則表示有錯誤發(fā)生

3:文件讀寫函數(shù)

在C語言中提供了很多文件讀寫的函數(shù)。字符讀寫函數(shù)fgetc和fputc;字符串讀寫函數(shù)fgets和
fputs;數(shù)據(jù)塊讀寫函數(shù)fread和fwrite;格式化讀寫函數(shù)fscanf和fprintf;這些函數(shù)
都包含在stdio.h頭文件中。

(1):讀字符函數(shù)fgetc

fgetc函數(shù)的功能是從指定的文件中讀取一個字符,函數(shù)的調(diào)用形式為:
字符變量 = fgetc(文件指針);
注意文件指針和文件內(nèi)部的位置指針是不同的。文件指針是指向整個文件的,
需要在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內(nèi)部的
位置指針用以指示文件內(nèi)部的當前讀寫位置,每讀寫一次,該指針均向后移動,
他不需要在程序中定義說明,而是由系統(tǒng)自動設(shè)置的。

(2):寫字符函數(shù)fputc

fputc函數(shù)的功能是把一個字符寫入指定的文件中,函數(shù)的調(diào)用形式為:
fputc(字符,文件指針);
fputc函數(shù)有一個返回值,如果寫入成功,則返回寫入的字符,否則返回EOF

(3):字符串讀寫函數(shù)fgets和fputs

讀字符串函數(shù)fgets函數(shù)的功能是從指定的文件中讀一個字符串到字符數(shù)組中,
函數(shù)的調(diào)用形式為:
fgets(字符數(shù)組名,n,文件指針);
其中n是一個正整數(shù),表示從文件中讀出的字符串不超過n-1個字符,在讀入的最后
一個字符加上串結(jié)束標識’\0’。對fgets函數(shù)有兩點說明:在讀出n-1個字符之前,如果
遇到了換行符或者是EOF,則結(jié)束操作。fgets函數(shù)也有返回值,其返回值是字符數(shù)組的首
地址。
寫字符串函數(shù)調(diào)用形式:
fputs(字符串,文件指針);

(4):塊數(shù)據(jù)讀寫函數(shù)fread和fwrite

調(diào)用形式:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer是一個指針,在fread中,他表示存放輸入數(shù)據(jù)的首地址。在fwrite中,
他表示存放輸出數(shù)據(jù)的首地址。size表示數(shù)據(jù)塊的字節(jié)數(shù),count表示要讀寫的
數(shù)據(jù)塊的塊數(shù)。

(5)格式化讀寫函數(shù)fcanf和fprintf

調(diào)用形式:
fcanf(文件指針,格式字符串,輸入表列);
fprintf(文件指針,格式字符串,輸出表列);

下面就是我們這個實例的要求:

編寫統(tǒng)計文件的字符數(shù)的程序,主要學(xué)習(xí)文件的概念 和文件操作等內(nèi)容。

下面是我的代碼實現(xiàn):

#include <stdio.h> #include <stdlib.h>/*** 編寫統(tǒng)計文件的字符數(shù)的程序,主要學(xué)習(xí)文件的概念* 和文件操作等內(nèi)容。*/ int main() {/** 保存字符個數(shù) **/int count = 0;/** 保存文件名 **/char fname[80];/** 文件指針 **/FILE *fp;printf("Please enter the file name:");scanf("%s",fname);if((fp = fopen(fname,"r")) == NULL){printf("Open file failed!!\n");exit(1);}count = 0;while(fgetc(fp) != EOF)count++;fclose(fp);printf("There are %d characters in file %s.\n",count,fname);return 0; }

下面是我的測試用例(名稱為test.txt):

cnuidocncn cwncviow wedcvnwicvmnw dcvnwidcvn cvwiovm wvcewoivm w evcovw vcmweiocvmwmvciomvw nvi] v wevmovjov wvjkvnivpvm wvciwmvw 'nvoikvv nvwvmjeewevvvv wvwkvnpowiehf]ewnveiowv

好了,最后看一下我的運行過程:

除此之外,我們還可以對文件進行隨機讀寫。在C中提供了一些文件定位的函數(shù),我們常用的有兩個:rewind和fseek。

這兩個函數(shù)的調(diào)用形式分別為:

rewind(文件指針)。

他的功能是把文件內(nèi)部的位置指針移到文件首。

fseek(文件指針,位移量,起始點);

將文件內(nèi)部位置指針移動到我們想要的位置。

轉(zhuǎn)載于:https://www.cnblogs.com/bobo1223/p/7287527.html

總結(jié)

以上是生活随笔為你收集整理的统计文件中字符个数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。