项目中使用到的linux c库函数使用经验总结:
库函数原型 | 描述 | 注意点 |
---|---|---|
int strcmp(const char *str1, const char *str2) | 1、函数功能说明:把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 2、入参说明:
3、该函数返回值说明:
| 1、strcmp是按照字节(byte-wise)比较的,并且比较的过程中会检查是否出现了"/0"结束符,一旦任意一个字符串指针前进过程中遇到结束符,将终止比较。 2、strcmp是用来比较字符串的。不能比较数字等其他形式的参数. |
int strncmp(const char *str1, const char *str2, size_t n) | 1、函数功能说明:把 str1 和 str2 进行比较,最多比较前 n 个字节。 2、入参说明:
3、该函数返回值说明:
| 1、按照字节(byte-wise)比较的,并且比较的过程中会检查是否出现了"/0"结束符,一旦任意一个字符串指针前进过程中遇到结束符,将终止比较。 2、用来比较字符串的。不能比较数字等其他形式的参数. 3、比较两个字符串前n位 |
int memcmp(const void *str1, const void *str2, size_t n)) | 1、函数功能说明:把存储区 str1 和存储区 str2 的前 n 个字节进行比较。 2、入参说明:
3、该函数返回值说明:
| 1、memcmp函数是用于比较两个内存块的内容是否相等,在用于字符串比较时通常用于测试字符串是否相等,不常进行byte-wise的字符串比较。如果要比较的对象中包含一些由于边界对齐需求而填入结构对象中的空格、联合 (union)结束的额外空格、字符串所分配的空间未使用完的部分引起的“holes”的话,最好使用memcmp来完成。这些“holes”的内容是不确定的,在执行byte-wise比较时结果也是不明确的。 2、strcmp比较的字符串,而memcmp比较的是内存块,strcmp需要时刻检查是否遇到了字符串结束的 /0 字符,而memcmp则完全不用担心这个问题,所以memcmp的效率要高于strcmp 3、如果要比较两个struct foo对象的话,建议最好使用memcmp。 |