當前位置:首頁 » 編程語言 » c語言file結構

c語言file結構

發布時間: 2022-05-26 22:08:33

① 詳細說明c語言中FILE結構體的成員含義,求大佬解答

struct _iobuf {
char *_ptr; //文件輸入的下一個位置
int _cnt; //當前緩沖區的相對位置
char *_base; //指基礎位置(應該是文件的其始位置)
int _flag; //文件標志
int _file; //文件的有效性驗證
int _charbuf; //檢查緩沖區狀況,如果無緩沖區則不讀取
int _bufsiz; //文件的大小
char *_tmpfname; //臨時文件名
};
typedef struct _iobuf FILE;

② C語言FILE類型怎麼知道指向哪個文件

文件名在fopen中是需要提供的,是字元串類型。
open了幾次,我不知道哪個文件沒關掉 這句話沒理解什麼意思
File類型沒有存儲指向的文件名,File類型定義:
struct{
int _fd;//文件號
int _cleft;//緩沖區所剩下的字元數
int _mode;//文件操作方式
char* _next;//文件當前讀寫位置
char* _buff;//文件緩沖區位置
}FILE;

③ C語言中FILE結構問題

我來回答吧:
首先是兩個輸入文件:
一個文本文件:scoret.txt
一個二進制文件:scoreb.txt
文本文件scoret.txt我們可以直接編輯(按要求編輯五個學生的姓名和成績),而二進制文件不易編輯。
我們先寫一個代碼,實再將scoret.txt文件轉成二進制文件scoreb.txt
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct stu {
char name[30];
int grade;
};

int main()
{
int i,n;
struct stu s[10];
FILE *fpIt,*fpIb; /*輸入*/
FILE *fpOt,*fpOb; /*輸出*/

fpIt=fopen("scoret.txt","r");
fpIb=fopen("scoreb.txt","wb");
if (fpIt==NULL || fpIb==NULL)
{
printf("File Open Error:\npress any key to exit:\n");
getch();
return -1;
}

i=0;
while (!feof(fpIt))
{
fgets(s[i].name,30,fpIt); /*有空格只能這樣輸入*/
fscanf(fpIt,"%d\n",&s[i].grade); /*文本輸入*/
printf("i=%d,name=%s\t grade=%d\n",i,s[i].name,s[i].grade);
getch();

fwrite(&s[i],sizeof(struct stu),1,fpIb);
i++;
}
n=i;
printf("n=%d\n",n);
fclose(fpIt);
fclose(fpIb);
getch();
return 0;
}

===============
上面的代碼在TC或VC下編輯運行,就可以生成scoreb.txt文件。這時scoreb.txt的學生信息與scoret.txt是一樣的。
接著就要修改一下scoret.txt文件的內容,重新編輯5個學生的信息給scoreb.txt
這樣使得scoret.txt與scoreb.txt分別各有五個學生的信息。
當然你如果有原始文件的話,上面都是浮雲。

下面是你這個問題的重點:
#include <mem.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct stu {
char name[30];
int grade;
};

int main()
{
int i,j,n;
struct stu s[10],temp;
FILE *fpIt,*fpIb; /*輸入*/
FILE *fpOt,*fpOb; /*輸出*/

fpIt=fopen("scoret.txt","r");
fpIb=fopen("scoreb.txt","rb");
fpOt=fopen("scoreOt.txt","w");
fpOb=fopen("scoreOb.txt","wb");

if (fpIt==NULL || fpIb==NULL || fpOt==NULL || fpOb==NULL)
{
printf("File Open Error:\npress any key to exit:\n");
getch();
return -1;
}

n=0;
while (!feof(fpIt))
{
fgets(s[n].name,30,fpIt); /*有空格只能這樣輸入*/
fscanf(fpIt,"%d\n",&s[n].grade); /*文本輸入*/
printf("n=%d,name=%s\t grade=%d\n",n,s[n].name,s[n].grade);
getch();
n++;
}
fclose(fpIt);
printf("===========\n");
while (!feof(fpIb) && n<10)
{
fread(&s[n],sizeof(struct stu),1,fpIb);
printf("n=%d,name=%s\t grade=%d\n",n,s[n].name,s[n].grade);
getch();
n++;
}
printf("n=%d\n",n);
fclose(fpIb);

/*排序*/
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (s[i].grade<s[j].grade)
{ /*整個結構體復制,如果不用memcpy的話,要先復制name的內容和grade*/
memcpy(&temp,&s[i],sizeof(struct stu));
memcpy(&s[i],&s[j],sizeof(struct stu));
memcpy(&s[j],&temp,sizeof(struct stu));
}
for (i=0;i<n;i++)
printf("%d %s",s[i].grade,s[i].name);

/*寫文件*/
for (i=0;i<5;i++)
fprintf(fpOt,"%s%d\n",s[i].name,s[i].grade);
fclose(fpOt);

for (i=5;i<10;i++)
fwrite(&s[i],sizeof(struct stu),1,fpOt);
fclose(fpOt);

getch();
return 0;
}

==============================
總結:
文本文件一般用:
讀:fscanf函數或fgets函數,
寫:fprintf函數即可(當然也可以用fputs函數)
二進制文件一般用:
讀:fread函數
寫:fwrite函數。

當然二進制文件你如果用記事本打開的話,一般是亂碼。你可以弄一個UltraEdit之類的文本編輯器,查看其二進制代碼。
2011年

④ C語言中文件由什麼 組成

C語言中文件由字元序列組成。C語言處理文件的方法是將文件以數據流的形式處理,不是將文件作為一個結構集合來處理,所以,C語言中文件的組織方式是無結構的字元序列方式。

C語言的優點有三個:

1、代碼量小。

要完成同樣一個功能,用C語言編寫出來的程序的容量是很小的,而用其他語言編寫容量就會比較大。

2、運行速度快。

3、功能強大。

(4)c語言file結構擴展閱讀:

C語言的特點:

1、語言簡潔,緊湊,使用方便,靈活

2、運算符豐富

3、數據類型豐富,具有現代語言的各種數據結構

4、具有結構化的控制語句

5、語法限制不太嚴格,程序設計自由度大

6、C語言允許直接訪問物理地址,能進行位(bit)操作,能實現匯編語言的大部分功

能,可以直接對硬體進行操作

7,生成目標代碼質里高,程序執行效率高

8,用C語言編寫的程序可移植性好(與匯編語言比)

演算法的特性:

1、有窮性,一個演算法應包含的有限的操作步驟,而不能是無限的

2、確定性,演算法的每一個步驟都應該是確定的,而不應當是含糊的,模稜兩可的

3、有零個或多個輸入,所謂輸入是指執行演算法時需要從外界取得必要的信息

4、有一個或多個輸出,演算法的目的就是為了求解,解就是輸出

5,有效性,演算法中的每一個步驟都應該能有效的執行,並得出確定的結果

⑤ C語言中FILE*fp是什麼意思

FILE 是系統定義的一種結構類型的名稱。

FILE *fp; 變數類型聲明。聲明 fp 是 FILE型指針,用於指向FILE類型 (文件結構)。

文件流-- 排成一隊,有先後次序的 輸入(或輸出)一串數據,駐留並通過 輸入輸出緩沖區,進出程序。如同水流般地流入或流出。它來自文件或寫入文件。

(5)c語言file結構擴展閱讀:

FILE *fp的替換用法:

fp=fopen("test.dat", "w"); /*建立一個文字文件只寫*/

fclose(fp); /*關閉文件*/

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

1、buffer:是一個指針,對fwrite來說,是要輸出數據的地址。

2、size:要寫入的位元組數;

3、count:要進行寫入size位元組的數據項的個數;

4、stream:目標文件指針。

⑥ c語言中文件類型有幾種

主要是兩種文件類型:1)文本文件,2)二進制文件。
一般來說,人類可讀的文件都作為文本文件,例如一片文章。其餘都作為二進制文件,例如一個程序。
在C語言中,文件的操作是通過FILE結構體進行了,利用fopen返回一個指向FILE結構體的指針,在使用fopen函數過程中,使用mode控制符對是否打開哪類文件進行控制:
FILE *fopen( const char *filename, const char *mode );
filename:文件名,mode:打開的模式,規定了是可讀、可寫、追加之類的屬性。
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀寫數據,文件必須存在。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
如果調用失敗,返回一個空指針。

⑦ C語言FILE結構體如何解釋

FILE結構體

C語言的stdio.h頭文件中,定義了用於文件操作的結構體FILE。這樣,我們通過fopen返回一個文件指針(指向FILE結構體的指針)來進行文件操作。可以在stdio.h(位於visual studio安裝目錄下的include文件夾下)頭文件中查看FILE結構體的定義,如下:
TC2.0中:
typedef struct {
short level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */
short bsize; /* Buffer size */
unsigned char *buffer; /* Data transfer buffer */
unsigned char *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */

VC6.0中:
#ifndef _FILE_DEFINED
struct _iobuf {

char *_ptr; //文件輸入的下一個位置
int _cnt; //當前緩沖區的相對位置
char *_base; //指基礎位置(即是文件的其始位置)
int _flag; //文件標志
int _file; //文件的有效性驗證
int _charbuf; //檢查緩沖區狀況,如果無緩沖區則不讀取
int _bufsiz; //???這個什麼意思
char *_tmpfname; //臨時文件名
};
typedef struct _iobuf FILE;
#define _FILE_DEFINED
#endif

用VC 控制台程序實現Word 的排版功能,輸入文件名讀取小於64k 的英文文本,
然後對英文文本進行勻齊排版,最後結果為:一行70個字元,左右兩邊分別空
4 個字元,長單詞不能折斷,每行必須對齊,單詞中間插入空格。均勻插入。
注意:1、不能用STL庫,類似文件流fstream都不允許用
2、不能用sdk,mfc,windows api
3、用最基本的c/c++實現
從文件輸入輸出:
#include<stdio.h>
FILE *in,*out;
in=fopen("a.txt","r"); //其意義是在當前目錄下打開文件a.txt, 只允許進行「讀」操作,並使in指向該文件。
out=fopen("aout.txt","w"); //打開aout.txt, 只能向該文件寫入數據, 如果不存在則創建aout.txt;
fscanf(in,"%d",&a);
fprintf(out,"%d",a);
fscanf(stdin,"%d",&a)=scanf("%d",&a);
fclose(in);
fclose(out);

文件使用方式 意 義
「rt」只讀打開一個文本文件,只允許讀數據
「wt」只寫打開或建立一個文本文件,只允許寫數據
「at」追加打開一個文本文件,並在文件末尾寫數據
「rb」只讀打開一個二進制文件,只允許讀數據
「wb」 只寫打開或建立一個二進制文件,只允許寫數據
「ab」 追加打開一個二進制文件,並在文件末尾寫數據
「rt+」 讀寫打開一個文本文件,允許讀和寫
「wt+」 讀寫打開或建立一個文本文件,允許讀寫
「at+」 讀寫打開一個文本文件,允許讀,或在文件末追加數據
「rb+」 讀寫打開一個二進制文件,允許讀和寫
「wb+」 讀寫打開或建立一個二進制文件,允許讀和寫
「ab+」 讀寫打開一個二進制文件,允許讀,或在文件末追加數據

對於文件使用方式有以下幾點說明:
1. 文件使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:
r(read): 讀
w(write): 寫
a(append): 追加
t(text): 文本文件,可省略不寫
b(banary): 二進制文件
+: 讀和寫
2. 凡用「r」打開一個文件時,該文件必須已經存在, 且只能從該文件讀出。
3. 用「w」打開的文件只能向該文件寫入。 若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。
4. 若要向一個已存在的文件追加新的信息,只能用「a 」方式打開文件。但此時該文件必須是存在的,否則將會出錯。
5. 在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,並作相應的處理。因此常用以下程序段打開文件:
if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror on open c:\\hzk16 file!");
getch(); //等待用戶敲入一個字元再運行
exit(1);
}

* 字元讀寫函數 :fgetc和fputc
* 字元串讀寫函數:fgets和fputs
* 數據塊讀寫函數:freed和fwrite
* 格式化讀寫函數:fscanf和fprinf

⑧ 在C語言中,FILE是關鍵字嗎

FILE不是C語言關鍵字,只是標准C中的標准輸入輸出中定義的一個新的數據類型
stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname;} FILE;FILE 主要用來定義帶緩沖的文件指針,如:FILE *fp;

附:C語言一共有32個關鍵字,如下:
auto 局部變數(自動儲存)break 無條件退出程序最內層循環case switch語句中選擇項char 單位元組整型const 定義不可更改值的變數continue 中斷本次循環,並轉向下一次循環default switch語句中的默認選擇項do 用於構成do.....while循環語句double 雙精度浮點型else 構成if.....else選擇程序結構enum 枚舉extern 聲明外部全局變數float 單精度浮點型for 構成for循環語句goto 跳到程序中指定的標簽位置if 構成if....else選擇結構int 整型long 長整型register 定義CPU內部寄存的變數return 用於返回函數的返回值short 短整型signed 有符號數 與基本整型類型結合使用sizeof 計算表達式或數據類型的佔用位元組數static 定義靜態變數、函數struct 定義結構類型switch 構成switch選擇結構typedef 重新定義數據類型union 聯合類型unsigned 定義無符號數據 與基本整型類型結合使用void 定義任意類型指針void * , 無參數 , 無返回值等volatile 易失性變數while 用於構成do...while或while循環結構

熱點內容
瘋狂java視頻 發布:2025-02-12 19:38:17 瀏覽:149
flash免費上傳網站 發布:2025-02-12 19:14:03 瀏覽:190
買腳本一般都在哪裡 發布:2025-02-12 19:08:07 瀏覽:823
戀舞刷分腳本se下載 發布:2025-02-12 18:56:53 瀏覽:8
c語言大小寫轉換程序 發布:2025-02-12 18:55:23 瀏覽:524
三星耳機壞了怎麼配置 發布:2025-02-12 18:54:46 瀏覽:975
簡易編程語言 發布:2025-02-12 18:48:07 瀏覽:523
咋上傳視頻 發布:2025-02-12 18:45:50 瀏覽:288
python的包機制 發布:2025-02-12 18:45:49 瀏覽:448
sqlserver網路實用工具 發布:2025-02-12 18:38:56 瀏覽:767