1.Linux標準IO編程
1.1Linux系統調用和用戶編程接口
1.1.1系統調用
用戶程序向操作系統提出請求的接口。不同的系統提供的系統調用接口各不相同。繼承UNIX系統調用中最基本和最有用的部分。
調用按照功能分:進程控制、進程間通訊、文件系統控制、存儲管理、網絡管理、套接字控制、用戶管理。
1.1.2用戶編程接口
實際開發使用的是用戶編程接口:
(1)、系統調用接口功能非常簡單,無法滿足程序的需求。(2)、不同操作系統的系統調用接口不兼容,程序移植時工作量大。
1.2Linux標準編程接口
1.2.1標準IO的由來:指的是ANSI C中定義的用於IO操作的一系列函數。
(1)、具有更好的移植性;(2)、可以減少系統調用的次數,提高系統效率(在用戶空間創建緩沖區)。
1.2.2流的含義
緩沖類型:(1)、全緩沖;(2)、行緩沖;(3)、無緩沖;
1.3標準IO編程
1.3.1流的打開:
FILE *fopen(const char *path, const char *mode);
1.3.2流的關閉:
int fclose(FILE *fp);
1.3.3錯誤處理:
void perror(const char *s);
char *strerror(int errnum);
1.3.4流的讀寫:
1.按字符(字節)輸入/輸出
字符輸入:
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar(void);
字符輸出:
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
2.按行輸入/輸出
行輸入:
char *fgets(char *s, int size, FILE *stream);
char *gets(char *s);
行輸出:
int fputs(const char *s, FILE *stream);
int puts(const char *s);
3.以指定大小為單位讀寫文件
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
1.3.5流的定位
int fseek(FILE *stream, long offset, int whence);
whence:SEEK_SET, SEEK_CUR, or SEEK_END:文件起始、當前、末尾讀寫位置;
long ftell(FILE *stream);
1.3.6格式化輸入與輸出
輸入:
int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
輸出:
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
1.4實驗內容
1.4.1文件的復制
1.實驗目的:通過實現文件的復制,掌握流的基本操作。
2.實驗內容:在程序中分別打開源文件和目標文件。循環從源文件中讀取內容並寫入目標文件。
3.實驗步驟:(1)、檢查參數→打開源文件→打開目標文件→循環讀寫文件→關閉文件。
(2)、編寫代碼。
1.4.2循環記錄系統時間
1.實驗目的:獲取系統時間→在程序中延時→流的格式化輸出。
2.實驗內容:程序中每隔一秒讀取一次系統時間並寫入文件。
3.實驗步驟:(1)、設計流程:打開文件→獲取系統時間→寫入文件→延時1s→返回第二步(獲取系統時間)。
(2)、編寫代碼。
1.Linux標準IO編程