对字符串操作: 对于标准库中,sting.h 下对字符串操作的函数,以下四个我们非常熟悉,但是常常在应试时,为了考察对字符串和指针的知识点,以及编程逻辑,常会要求能自己用代码实现。
size_t strlen(const char *s) 功能:计算字符串长度,结果不包含'\0'、
char *strcpy(char *dest,const char * src) 功能:拷贝字符串,相当于普通变量的赋值语句,如果目标dest空间不够,可能会产生段错误
char *s strcat(char *dest,const char * src) 功能:把字符串src追加到dest的末尾,相当于普通变量的+=
int strcmp(const char *s1,const char * s2) 功能:比较两个字符串,按首字母顺序(字典序),小的排在前面
s1>s2 返回正值 s1<s2 返回负值 s1 == s2 返回 0
需加头文件:
#include <stdio.h>
#include <assert.h>
size_t str_len(const char* str)
{
assert(NULL != str);
const char* tmp = str;
while(*tmp) tmp++;
return tmp - str;
}
char* str_cpy(char* dest,const char* src)
{
assert(NULL!=dest && NULL!=src);
char* tmp = dest;
while(*tmp++ = *src++);
return dest;
}
char* str_cat(char* dest,const char* src)
{
assert(NULL!=dest && NULL!=src);
char* tmp = dest;
while(*tmp)tmp++;
while(*tmp++ = *src++);
return dest;
}
int str_cmp(const char* s1,const char* s2)
{
assert(NULL!=s1 && NULL!=s2);
while(*s1 == *s2 && *s1) s1++,s2++;
if(*s1 > *s2)
return 1;
if(*s1 < *s2)
return -1;
return 0;
}
int main(int argc,const char* argv[])
{
printf("%d\n",str_len("hehe"));
char str[20];
puts(str_cpy(str,"hehe----"));
puts(str_cat(str,"++++++"));
printf("%d\n",str_cmp("1235","1234"));
- 测试结果
|