C語言安利一波函式封裝

2021-08-25 14:18:39 字數 1597 閱讀 7430

最近學弟學妹們在寫聊天室,期間遇到了很多問題,也「逼迫」我們這些大二(其實即將大三)狗考慮了許多以前沒有考慮過的東西。現在就著我們小組的聊天室的專案,送給學弟學妹們」幾個可能安全的封裝函式。「

ssize_t sendlen(int fd, const void *buf, size_t len, int flags)

sum += n;

ptr += n;

}return (sum);

}

ssize_t recvlen(int fd, void *buf, size_t len, int flags) 

else

if (n == 0)

sum += n;

ptr += n;

}return (sum);

}

static

int recv_cnt = 0;

static

char *recv_ptr = null;

static

char recv_buf[maxline];

static ssize_t my_recv(int fd, char *ptr, int flags)

else

if (recv_cnt == 0)

recv_ptr = recv_buf;

}recv_cnt--;

*ptr = *recv_ptr++;

return (1);

}ssize_t recvline(int fd, void *vptr, size_t maxlen, int flags)

else

if (rc == 0)

else

return (-1);

}*ptr = 0;

return (n);

}ssize_t recvline(int fd, void *buf, size_t maxlen, int flags)

注意事項:
static int recv_cnt = 0; //讀取的資料量

static char *recv_ptr = null; //指向recv_buf的位元組型指標

static char recv_buf[maxline]; //存放讀取資料的結構

recvline函式從recv_buf中拿到一行資料 。

my_recv函式檢查如果讀取的資料量<=0,就進行一次讀取。問:這裡為什麼要用recv而不用自己封裝的recvlen? 因為recvlen直到讀取len個位元組才會返回,而我們這裡並不要求,只要讀取從緩衝區中讀取比maxline小的位元組就行了 。

if (recv_cnt <= 0)

else

if (recv_cnt == 0)

recv_ptr = recv_buf;

}

C語言結構體封裝函式指標

c語言結構體 struct 從本質上講是一種自定義的資料型別,只不過這種資料型別比較複雜,是由 int char float 等基本型別組成的。例如,在校學生有姓名 年齡 身高 成績等屬性,學了結構體後,我們就不需要再定義多個變數了,將它們都放到結構體中即可,如圖所示 那麼我們怎麼用c語言的結構體來...

C語言函式的封裝 未完待續

堅持 成長 每日一篇 返回 1表示讀取失敗,注意返回的資料是帶 n。else if ret 0 else return offset 讀取固定位元組,都到結尾返回已讀子節數,1表示讀取失敗 else if ret 0 else return offset 成功返回連線成功後的套接字,失敗返回 1。i...

C語言庫函式一

由於c語言本身可以說是一門非常輕量化的程式語言,語言本身提供的內容非常有限,當然這也促成了靈活小巧的特點。c語言有很大一部分特性都不是通過語言性質來實現的,而是通過庫函式來實現的,如果不使用庫函式幾乎無法編寫出任何可用的c語言程式來。c語言官方提供的庫函式,被稱之為標準庫函式。標準庫函式中實現了我們...