標籤:
static和extern:
static修飾變數(可以修飾局部變數),只有包含那個變數定義的原始碼檔案可以訪問(內部變數)
延長局部變數的生命週期,從程式啟動到退出
作用:static定義的變數範圍會延長
static定義變數的語句只會被執行一次
extern定義的變數哪個源檔案都可以使用,只要聲明了就可以(外部變數)
extern不可以修飾局部變數
static對全域變數的作用
static修飾的全域變數只能在當前檔案中使用,而不能在其他檔案中使用
static 修飾的函數是內建函式(只能在定義的檔案中使用)
extern 修飾的函數可以在內部和外部使用(可以在標頭檔中聲明也可以在使用之前聲明)
12)檔案操作:
fopen函數用來開啟一個檔案,一般形式為:
檔案指標變數名 = fopen(檔案名稱,檔案使用方式)
FILE *fp = NULL;
fp = fopen ("a.txt", "r"); //以唯讀方式開啟檔案
if(fp != NULL){
//操作檔案
}else{
//提示使用者
}
fclose(fp);
正常關閉檔案fclose返回0,如果返回其它則關閉出錯。如果沒有關閉,則導致檔案寫入失敗
檔案操作步驟:
1) 建立檔案指標
FILE *fp = NULL;
2) 開啟檔案
fopen(檔案名稱,操作方式);
如果開啟成功,返迴文件首地址,失敗返回NULL;
字元讀寫函數:
fputc(字元量,檔案指標);//待寫入的字元量可以是字元常量或變數
fputc(‘a‘, fp);
例:
char ch = ‘X‘;
FILE *fp = NULL;
fp = fopen("fputs.txt", "w");
if(fp != NULL){
fputc(ch, fp);
printf("寫入成功");
//ch = fget(fp);
}
fclose(fp);
char s = fgetc(fp);
while(s != EOF){ //EOF檔案末尾的標誌
putchar(s);
s = fgetc(fp); //系統自動讀取下一個字元
}
char ch;
FILE *fp = fopen("inputString.txt", "w+");
if(fp = NULL){
printf("請輸入字串:");
ch = getchar();
int count = 0;
while(ch != ‘\n‘){
count++;
fputc(ch, fp);
ch = getchar();
}
printf(" 一 共輸入了%d個字元\n", count);
rewind(fp); //把檔案指標重新指向檔案頭
ch = fgetc(fp);
while(ch != EOF){
putchar(ch);
ch = fgetc(fp);
}
fclose(fp);
return 0;
}
count = fputs(str, fp);//count返回本次寫入字串長度
char str[50]; //fgets讀取時,當檔案內容讀取完畢時,會自動加上\0
fget(str, sizeof(str), fp); //fgets讀取時,當讀取到\n或EOF時,讀取結束
char *s = "asdfasd";
fputs(s, fp);
char str[3];//長度為3,一個漢子讀取一半,長度為4全部讀取
fgets(str, sizeof(str), fp);
fread(buffer, size, count, fp)
fwrite(buffer, size, count, fp)
buffer:表示存放輸入輸出資料的首地址。
size:表示資料區塊的位元組數
count:表示要讀寫的資料區塊塊數
fp:表示檔案指標
int a= 1, b = 2;
fprintf(fp,"%d#%d;", a, b);
fscanf(fp, "%d,%d", &arr[i][0], &arr[i][1]);
struct Struct stu;
fseek(檔案指標,位移量,起始點)
指標定位:
fseek(fp, sizeof(struct Student), SEEK_SET); //SEEK_SET檔案首
從檔案中讀取資訊:
freak(&str, sizeof(struct Student), 1, fp);
c語言檔案和特殊修飾符