C語言基礎函式

云中锦书来發表於2024-07-24

C語言

檔案操作

fopen(filename, "r") // 只讀模式開啟檔案
-r // 只讀
-w // 可寫
-b // 二進位制
fgetc(fd) // 從fd獲取char
fgets(st, n, stdin) // 從輸入流獲取n個字元
getchar() // 從輸入流獲取一個字元
feof() // 判斷是不是結尾,返回1是結尾
fflush() // 重新整理緩衝區到檔案中
fopen() // 檔案開啟
fclose() // 檔案關閉
fprintf()  // 指定格式寫入檔案
fread() // 將檔案讀入到緩衝區中
fseek() // 更改檔案指標到開始還是末尾
ftell() // 返回檔案有多大,位元組

字串操作函式

strcmp(char1, char2)  // 相等返回0
strchr(str, '\n') // 在str中查詢'\n'
strncpy(source, dist, sizeof(source));
strcpy(source, dist)// 遇到\0結束,複製函式
strdup(const char *s) // 複製引數指定的字串,並分配新的記憶體進行儲存,然後返回指標指向它
strtok(char *restrict s, const char *restrict delimiters) // 根據指定分隔符將字串分割為多個子字串,返回一個指向分割後生成的下一個字串的指標,除去第一次呼叫後續都用NULL

記憶體塊操作函式

memcpy() // 記憶體複製函式
memset() // 記憶體初始化函式

聯合體union

如果同時有兩個函式指標聯合體,它們會指向同一個記憶體地址區域,那麼只要有一個被賦值,那麼另一個就可以進行呼叫。

#include <stdio.h>

typedef int (*call_func) (int , int );

union {
    call_func lfunc;
    call_func rfunc;
}r_action;

int adds(int a, int b){
    return a +b;
}

int main(){

    r_action.lfunc = adds;
    int n = r_action.rfunc(1,2);
    printf("add is %d\n", n);
    return 0;
}

注意:

這種方式並不好維護,因為是借用了union內部機制進行處理。

相關文章