此篇文章記錄 C 語言藝術的第 11 章節<資料結構與檔案處理>,大致統整一些 C 語言中檔案處理的寫法,也整理筆者對於當前程式題目常見的程式寫法。
**struct,**是資料結構中最為重要的一項觀念,其作用就像你的學生證,struct 的名稱是【學生證】,新辦一張卡,使這個資料結構創建一個為【client】,內容物為你的【姓名】、【年齡】、【id】、【金額】,和一般創建變數的方式相同,只是內容物需要自己指定。
#include <stdio.h>
// struct 基本寫法
struct Student_id_card{
unsigned int id;
unsigned int age;
char name[15];
double balance = 0.0; // 可以預先設定 struct 裡變數的初始值
};
int main(){
// 第一種創建方式,一個一個指定,或由輸入決定
struct Student_id_card client;
scanf("%f", &client.balance);
client.age = 16;
// 第二種創建方式,一次性的指定
struct Student_id_card John = {12345, 18, "JoHn", 100.0};
// 所有可以對變數的動作,if、for、scanf、printf......,都可以對 struct 動作
printf("%s %d %d %f", John.name, John.age, John.id, John.balance);
}
懂了嗎?嘗試看看這個題目吧~!
檔案處理中最為基礎的東西,假設滑鼠游標稱為【read_dart】,檔案開啟時,read_dart 會置於檔案的開頭位置,接著循序向下讀取資料,直到檔案的結尾。
讀取資料是檔案結構中最為重要的一部份,可以說不會資料的輸入與輸出就是不會檔案處理。
#include <stdio.h>
int main(){
// 創建指標指向要開啟的檔案
FILE *input, *output;
input = fopen("input.txt", "r");
output = fopen("output.txt", "w");
// 字元陣列與字元
char str[10000];
char ch;
// 檔案開啟的除錯
if(input == NULL){
printf("input.txt open read mode failed.\\n");
}
if(output == NULL){
printf("output.txt open write mode failed.\\n");
}
// 輸入
fscanf(input, "%s", str); // 與 scanf 相同,遇到空格自動停下
fgets(str, 10000, input); // 與 getline(cin, input) 相同,讀入一整行包含空白
ch = fgetc(input); // 與 getchar 相同,單取一個字元變數
// 輸出
fprintf(output, "%s %c\\n", str, ch); // 與 printf 一樣,可以排版
fputc(ch, output) // 單純輸出一個字元
// 將讀取的位置重置到檔案開頭位置
rewind(input);
// 關檔
fclose(input);
fclose(output);
}
while(fscanf(input, "%s", str) != EOF){}
while(fgets(str, 10000, input) != NULL){}
while(fgetc(input)){}