char * strncpy ( char * destination, const char * source, size_t num );
- 如果source的长度大于num字节,那就拷贝num字节,不会在末尾加上’\0’
- 如果source的长度小于num字节,那就补充’\0’,直到总共写入 num 个字符为止。
- 目的地和来源不得重叠(有关重叠时更安全的替代方案,请参见 Memmove)
#include<assert.h>
char* strncpy(char* dest, const char* src, size_t count)
{
assert(dest && src);
char* start = dest;
while (count && (*dest ++= *src++))//一定是先判断count,&&有一个为假,右边将不再判断
count--;
if (count)
while (--count)
*dest++ = '\0';
return(start);
}
int strcmp ( const char * str1, const char * str2 );
将 C 字符串 str1 与 C 字符串 str2 进行比较。
此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续比较,直到字符不同或达到终止空字符。
- str1 < str2 返回小于0的数
- str1 == str2 返回0
- str1 > str2 返回大于0的数
int strcmp(const char* str1, const char* str2)
{
assert(str1&& str2);
while ((*str1 == *str2))
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
return *str1-*str2;
}