1. 程式人生 > >1.Linux標準IO編程

1.Linux標準IO編程

實現 緩沖類 set ... file pat 單位 函數 基本操作

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編程