![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++常用自定义函数集合
该专栏包含日常开发中,常用的一些功能模块,同时,每个模块的实现,使用的是标准的C/C++库,而非第三方库。
历史五千年
母校-太原工业学院
展开
-
C/C++时间操作函数集合
【代码】C/C++时间操作函数集合。原创 2023-12-26 14:54:32 · 415 阅读 · 0 评论 -
C/C++判断文件描述符是否可读
说明:当程序从标准输入或套接字读取内容时,如果当前缓存区里没有内容可供读取,则程序会一直阻塞在那里。这时,我们可以利用select系统调用,事先先探测下文件描述符是否具备了读取功能,如果具备了,则调用相应的读取函数;如果不具备,则执行其他操作,而不是被阻塞在那里。封装int fd_is_ready_read(int fd){ struct timeval tv; fd_set readfds; int ret; FD_ZERO(&原创 2022-02-20 15:37:58 · 1143 阅读 · 0 评论 -
C/C++获取系统IP地址
说明:使用该封装的函数,必须保证/etc/hosts下有主机名和IP的对应关系,否则会失败。封装#include <unistd.h>#include <netdb.h>#include <stdio.h>#include <string.h>int get_localhost_ip(char *buff){ char hostname[32]; struct hostent *hptr; char buff_tmp[32]; c原创 2022-02-19 16:47:37 · 4024 阅读 · 0 评论 -
C/C++获取操作系统字节序
说明:我们知道网络字节序是大端字节序,但是各个操作系统的字节序就不固定了,可能是小端字节序,也有可能是大端字节序。所以,我们在将网络字节流赋值给本地变量时,需要先判断下本地是否是大端字节序,如果不是,需要先将网络字节流转换为小端字节序,然后再赋值,否则,会出现解析错误。封装typedef enum BYTE_ORDER{ BYTE_LITTLE_ENDIAN = 0, BYTE_BIG_ENDIAN, BYTE_OTHER}BYTE_ORDER;BYTE_ORDER GetB原创 2022-02-18 18:02:39 · 547 阅读 · 0 评论 -
C/C++获取广播地址
说明:通过IP地址和网络掩码来获取广播地址封装#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <string.h>int GetBroadcastIP(const char *ip,const char *netmask,char *broadcastIp){ struct in_原创 2022-02-18 12:47:32 · 1033 阅读 · 0 评论 -
C/C++判断字符串IP是否合法
说明:判断读取到的字符串IP是否合法封装#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int InputParaCorrect(const char *cp){ struct in_addr inaddr; if(inet_aton(cp,&inaddr)==0) { return -1; } return 1;}使用:voi原创 2022-02-18 10:41:17 · 1179 阅读 · 0 评论 -
C/C++按行读取文件
说明:逐行读取文件内容到缓存区里#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>int read_line(char *buff,int max_len,FILE*f){ int c; int pos=0; if(buff==0 || max_len<=0 || f==0) { return -1; } wh原创 2022-02-13 13:15:49 · 2308 阅读 · 0 评论 -
C/C++字符串大小写转换
char* ToUpper (char *str){ int i; for (i = 0; i < strlen (str); i++) { if (str[i] >= 'a' && str[i] <= 'z') { str[i] = str[i] + 'A' - 'a'; } } return str;}char *ToLower(char *str){ int i; for (i =0; i < strlen(str).原创 2022-01-22 20:14:40 · 911 阅读 · 0 评论 -
C/C++数字转字符串
string IntToStr (int nVal){ string strRet; char buff[128]; sprintf (buff, "%d", nVal); strRet = buff; return strRet;}原创 2022-01-17 17:19:20 · 1150 阅读 · 0 评论 -
C/C++删除字符串前面的空格和制表符以及最后的换行符
//删除前面的全部空格或者制表符和最后的回车换行符void stripWhiteSpace (string &str){ if (str == "") { return; } string::iterator cur_it; cur_it = str.begin(); while (cur_it != str.end()) { if (((*cur_it) != '\t') && ((*cur_it) != ' ')) { break; .原创 2022-01-17 17:01:47 · 3483 阅读 · 0 评论