當前位置:首頁 » 編程語言 » c語言r只讀
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言r只讀

發布時間: 2023-06-29 19:34:57

㈠ C語言 以只讀方式打開一個文件應選擇什麼參數

如果是文本文件 打開方式選"r"
如果是二進制文件 打開方式選擇"rb"
有些平台支持"rt" 和單獨的"r"相同.

㈡ C語言程序設計 簡單的讀取文件並整理數據

首先還是先完整的學習一下文件打的所有方式。
文件的打開方式是由r,w,a,t,b,+,六個字元組成。如下:
「r」 只讀打開文件,如果文件不存在,返回一個錯誤.
「r+」 可讀寫打開文件,如果文件不存在,返回錯誤.
「w」 只寫打開文件,如果文件不存在,則創建一個新的文件,如果已經存在,將裡面的內容清空.
「w+」 可讀寫打開文件,如果文件不存在,創建新文件,如果已經存在,清空文件中的內容.
「a」 以追加寫入的方式打開文件(在文件未尾追加寫入數據) ,如果文件不存在,創建新文件.
「a+」 以可讀取並且可追加寫入的方式打開文件,如果不存在,創建新文件.
如果要指定打開文本文件,則在打開方式中加入』 t 『 字元.如果是二進制文件,則加入』 b 『 字元. 如下:

1

"rt" "rt+" "r+t" "rb" "rb+" "r+b"

當以追加方式打開文件時,文件的數據偏移指針會指向文件的最未尾,如果此時從文件讀入數據,可能會失敗,都已經文件未尾了,還有什麼數據要讀的?所以追加方式打開時,不要第一時間讀入數據.
注意: 如果想打開文件後,先讀取數據,然後再寫入,請不要用」w+」的方式,因為」w」方式會把已存在的文件的數據清空,所以會發生讀取錯誤.
基於上面介紹,我們這章要從一個文本文件中讀取數據,所以使用下面代碼打開文件:

1
2
3
4

FILE * fptr;
fptr = fopen( FILE_NAME , "rt" );
.....
fclose( fptr );

讀取文件的函數原型如下:

1
2

int fgetc( FILE* fstream);
char* fgets( char* buf , int n , FILE* fstream);

fgetc() 返回讀到的字元的ASCII碼.
在fgets()中,buf參數用來指定一個字元串指針來接收讀到的數據,參數n用來指定讀入的最大字元數.
fgets() 返回讀到的字元串指針.如果錯誤,返回NULL.
並且,我們可以用feof()函數來判斷是否已經讀到了文件的未尾.

1

int feof( FILE* fstream);

如果已經讀到文件未尾,feof()返回非0值(也就是TRUE值),如果沒有,返回0(FALSE);
學完了上面,我們現在准備一個data.txt文件,內容可以,也可以你喜歡的任何內容:

1
2
3

1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

請把data.txt文件與程序一起放在同一個文件夾,否則會有打開data.txt文件錯誤
然後編寫一個程序,代碼如下:

C

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

/*
本程序中涉及到的fputc() 和 fputs()函數在上一章已經作了介紹,可自行查閱.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAME "data.txt" //文件名
#define BUFSIZE 27 //緩存的大小為27位元組
int main( int argc , char* argv[])
{
FILE *fptr;
char buf[BUFSIZE];
char ch;
fptr = fopen( FILENAME , "r+t");
if ( fptr == NULL )
{
puts( "open file error");
exit(1);
}
do{
ch = fgetc( fptr);
fputc(ch , stdout);
}while( ch != 'n' );//如果讀到換行符,就退出循環.
while( ! feof( fptr) ){//如果讀到文件未尾,就退出循環.
memset ( buf , 0 , BUFSIZE);
fgets( buf , BUFSIZE -1 , fptr );
//之所以要限制讀入的數據長度為BUFSIZE-1,因為buf字元串的最後一個字元必須為'',防止被讀入的數據覆蓋.
fputs( buf , stdout);
}
fclose( fptr);
getchar();//程序暫停,按下回車鍵後繼續
return 0 ;
}

把代碼復制到編譯環境中編譯後,把執行程序放在與data.txt相同的文件夾,然後運行,就會看到效果了.

㈢ C語言文件中什麼是「只讀」和「只寫」

r只讀為輸入打開一個文本文件(文件必須存在)
w只寫為輸出打開一個文本文件(如沒有文件,則新建)