这篇文章主要介绍“C语言常用的库函数怎么使用”,在日常操作中,相信很多人在C语言常用的库函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言常用的库函数怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。
函数的模拟实现
int my_strlen(dest)
{
int count=0;
while(dest)//当dest等于'\0'时停止循环
{
count++;
dest++;
}
return count;
}
int my_strlen(char* dest)
{
int count=0;
if(*dest!='0')
{
dest++;
count++;
return my_strlen(dest,count)
}
else
return count;
}
int my_strlen(char* dest)
{
char* arr=dest;//定义一个新指针指向dest
while(*arr)//直到arr指向'\0'
{
arr++;
}
return (arr)-(dest);//指针相减代表两个指针之间的元素个数
}
char* strcpy ( char * destination , const char * source )
会将源字符串中的 '\0' 拷贝到目标空间。
目标空间必须足够大,并且可变以确保能存放源字符串。
函数的模拟实现
char* my_strcpy(char* dest, const char* str)
{
char* arr1 = dest;
while ((*dest++ = *str++)!='\0')
{
;
}
return arr1;
}
int main()
{
char arr1[] = "***************";
char arr2[] = "hello word";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
int strcmp ( const char * str1, const char * str2 );
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
函数的模拟实现
int my_strcmp(char* arr1,char* arr2)
{
while(*arr1 == *arr2)
{
if (*arr1 == '\0' && *arr2 == '\0')
{
return 0;
}
else
{
arr1++; arr2++;
}
}if (*arr1 > *arr2)
{
return 1;
}
else if (*arr1 < *arr2)
{
return -1;
}
}
char * strcat ( char * destination, const char * source );
函数的模拟实现
char* my_strcat(char* dest, char* str)
{
char* ret = dest;
while (*dest)
{
dest++;
}
while (*dest++=*str++)
{
;
}
return ret;
}
int main()
{
char arr1[50] = "hello";
char arr2[] = "word";
char* count=my_strcat(arr1, arr2);
printf("%s", count);
return 0;
}
char * strstr ( const char *str1, const char * str2);
函数的模拟实现
char* my_strstr(char* dest, char* str)
{
char* arr1 = str;
char* cur = dest;
while (*cur)
{
str = arr1;
dest = cur;
if (*dest != *str)
{
dest++;
str++;
}
else if (*dest == *str)
{
while (*dest == *str)
{
dest++; str++;
}if (*str == '\0')
{
return cur;
}
}
cur++;
}return NULL;
}
int main()
{
char arr1[] = "abbbcdef";
char arr2[] = "bbc";
char* ret=my_strstr(arr1, arr2);
if (NULL == ret)
{
printf("找不到子串\n");
}
else
{
printf("%s\n", ret);
}
return 0;
}
char * strtok ( char * str, const char * sep );
strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记
int main()
{
char buff[] = "www.aaabbbccc@qq.com";
char buf[20] = { 0 };
strcpy(buf, buff);
char* sep=".@";
char* str = NULL;
for (str = strtok(buf, sep); str != NULL; str = strtok(NULL, sep))
{//NULL是从保存好的位置开始往后找
printf("%s\n", str);
}
return 0;
}
iscntrl | 任何控制字符 |
isspace | 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v' |
isdigit | 十进制数字 0~9 |
isxdigit | 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F |
islower | 小写字母a~z |
isupper | 大写字母A~Z |
isalpha | 字母a~z或A~Z |
isalnum | 字母或者数字,a~z,A~Z,0~9 |
ispunct | 标点符号,任何不属于数字或者字母的图形字符(可打印) |
isgraph | 任何图形字符 |
isprint | 任何可打印字符,包括图形字符和空白字符 |
void * memcpy ( void * destination , const void * source , size_t num )
函数模拟实现
void* my_memmove(void* dest,void* str , size_t count)
{
void* ch = dest;
if (dest > str)
{
while (count--)
{
*((char*)dest + count) = *((char*)str + count);
}
}
else
{
while (count--)
{
*(char*)dest = *(char*)str;
dest=(char*)dest+1;
str=(char*)str+1;
}
}
}
int main()
{
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
my_memmove(arr1+2, arr1 , 20);
int sz = sizeof(arr1) / sizeof(arr1[0]);
for (int i = 0; i < sz; i++)
{
printf("%d", arr1[i]);
}
return 0;
}
int memcmp ( const void * ptr1 , const void * ptr2 , size_t num );
函数模拟实现
void* my_memcmp(char* arr, char* arr1, int count)
{
while (count--)
{
if (*(char*)arr > *(char*)arr1)
{
return 1;
}
else if ((*(char*)arr < *(char*)arr1))
{
return -1;
}
arr++; arr1++;
} return 0;
}
int main()
{
int arr[] = { 1,2,3,4,5 };
int arr1[] = { 1,2,3,4,4 };
int ret=my_memcmp(arr, arr1, 20);
printf("%d", ret);
return 0;
}
到此,关于“C语言常用的库函数怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。