程序啟動自動打開 stdin(0)、stdout(1)、stderr(2)。
FILE* fp = fopen("data.txt", "rb+"); // 二進制讀寫
if (!fp) { perror("fopen"); return 1; }
fclose(fp);
模式:r/w/a 及 +/b 組合。a/a+ 追加模式適合多進程寫入保證數據完整性。
char line[1024];
while (fgets(line, sizeof(line), fp)) { /* 處理 */ }
fputs("輸出行\n", fp); // 不自動換行
typedef struct { char id[5]; char name[20]; double score; } STUDENT;
STUDENT stu[3] = {{"0001","趙軍",89}, ...};
fwrite(stu, sizeof(STUDENT), 3, fp);
rewind(fp);
fseek(fp, sizeof(STUDENT), SEEK_SET); // 跳過第一條
fread(&stu2, sizeof(STUDENT), 1, fp);
DIR* dp = opendir(".");
struct dirent* ep;
while ((ep = readdir(dp))) {
printf("%s\n", ep->d_name);
}
closedir(dp);
ls -l遍歷目錄,用 stat 獲取文件屬性,解析權限位輸出 drwxr-xr-x 格式,格式化時間輸出。代碼見原文 myls.c。