標籤:io ar os sp for on 檔案 資料 bs
---恢複內容開始---
c庫函數檔案操作獨立於具體的系統平台,可移植性較好。
庫函數-建立和開啟
FILE*fopen(const char*filename,const char*mode)
mode:開啟模式
常見的開啟模式:
r,rb:唯讀方式開啟
w,wb: 唯寫方式開啟,如果檔案不存在,則建立該檔案
a,ab:追加方式開啟,如果檔案不存在,則建立該檔案
r+,r+b,rb+:讀寫方式開啟
w+,w+b,wh+:讀寫方式開啟,如果檔案不存在,則建立該檔案
a,a+b,ab+:讀和追加方式開啟,如果檔案不存在,則建立該檔案
b用於區分二進位檔案和文字檔,這一點在DOS,window中區分,LINUX不區分二進位檔案盒文字檔。
庫函數-讀
size_t fread(void*ptr,size_t size,size_t n,FILE *stream);
從stream指向的檔案中讀取n個欄位,每個欄位為size位元組,並將讀取的資料放入ptr所指的字元數組中,返回實際讀取的位元組數。
庫函數-寫
size_t fwrite(void*ptr,size_t size,size_t n,FILE *stream);
讀字元:
int fgetc(FILE*stream);
---恢複內容結束---
c庫函數檔案操作獨立於具體的系統平台,可移植性較好。
庫函數-建立和開啟
FILE*fopen(const char*filename,const char*mode)
mode:開啟模式
常見的開啟模式:
r,rb:唯讀方式開啟
w,wb: 唯寫方式開啟,如果檔案不存在,則建立該檔案
a,ab:追加方式開啟,如果檔案不存在,則建立該檔案
r+,r+b,rb+:讀寫方式開啟
w+,w+b,wh+:讀寫方式開啟,如果檔案不存在,則建立該檔案
a,a+b,ab+:讀和追加方式開啟,如果檔案不存在,則建立該檔案
b用於區分二進位檔案和文字檔,這一點在DOS,window中區分,LINUX不區分二進位檔案盒文字檔。
讀
size_t fread(void*ptr,size_t size,size_t n,file *stream);
寫:
size_t fwrite(void*ptr,size_t size,size_t n,file *stream);
讀字元
int fgetc(FILE*stream);
舉例:
#include<stdio.h>
main()
{
FILE*fp;
char ch;
if((fp=fopen("c1.txt","rt"))==NULL)
{
printf("\nCannot open file strike any key exit");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOP)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
寫字元
int fputs(inyt c,FILE*stream)
舉例:
#include<stdio.h>
main()
{
FILE*fp;
char ch;
if((fp=fopen("string","w+"))==NULL)
{
printf("\nCannot open file ,strike any key exit");
getch();
exit(1);
}
printf("input a string:\n");
ch=fgetchar();
while(ch!=‘\n‘)
{
fputc(ch,fp);
ch=getchar();
}
printf("\n");
fclose(fp);
}
格式化讀:
fscanf(FILE*stream,char*format[,argument...])
從一個流中格式化輸入
#include<stdlib.h>
#include<stdio.h>
int mian(void)
{
int i;
printf("input an interger:");
if(fscanf(stdin,"%d",&i))
printf("The integer read was:%i\n",i);
}
格式化寫:
fprintf(FILE*stream,char*format[,argument...])
格式化輸出從到一個流中
#include<stdlib.h>
#include<process.h>
FILE*stream;
int mian(void)
{
int i=10;
double fp=1.5;
char s[]="this is a string";
char c=‘\n‘;
stream=fopen("fprintf.out",""w);
fprintf(stream,"%s%c",s,c);
fprintf(stream,"%d\n",i);
fprintf(stream,"%f\n",fp);
fclose(stream);
}
定位:
int fseek(FILE*stream,long offset,int whence);
whence:
SEEK_SET
SEEK_CUR
SEEK_END
路徑獲得:
char*getcwd(char*buffer,size_t size);
把路徑copy到buffer中,buffer如果太小,返回-1;
建立目錄:
int mkdir(char*dir,int mode);
0返回成功,-1表示出錯。
linux應用程式開發-檔案編程-庫函數