一、计算字符串单词数
int NumWord(int *str)
{
assert(str!=NULL);
int count=0;
while(*str!='\0')
{
//isalpha//判断当前字符是否为字母字符 ctype.h
if(isalpha(*str)&&!isalpha(*(str+1)))
{
count++;
}
str++;
}
return count;
}
二、字符串前n项复制
char* My_strncpy(char *dest,char *src,int n)
{
int i = 0;
char *p = dest
assert(*src != NULL && *dest != NULL && n > 0 && n < strlen(src));
while(i < n)
{
*dest++ = *src++;
i++;
}
return p;
}
三、将字符转化为数字输出
int My_a2i(char *str)
{
int sum = 0;
int i = 0;
assert(*str!=NULL);
while(*str != ' ')
{
str++;
}
while(*str == '-')
{
printf("-");
str++;
}
while(isdigit(*str))
{
i=*str-'0';
sum=sum*10+i;
str++;
}
//("1a 23")
return sum;
}
四、将数字转化为字符
char My_i2a(char *str,int num)
{
int i = 0;
int tmp;
//char str[10]="";局部变量出了函数,内存被销毁。
while(num != 0)
{
tmp = num%10;
str[i] = tmp + '0'
num /= 10;
i++;
}
str[i]='\0';
for(int j = 0;j < i;j++,i--)
{
char ch=str[j];
str[j]=str[i];
str[i]=ch;
}
return str;
}
五、字符串连接
char *My_strcat(char *dest,char *src,int len)
{
assert(*dest != NULL&&*src != NULL);
if(strlen(dest)+strlen(src) > len)
{
return null;
}
char *p = dest;
while(*dest != '\0')
{
dest++;
}
while(*dest++ = *src++){}
return p;
}
六、字符串的比较
int My_strcmp(const char *str1,const char *str2)
{
int tmp;
while(tmp = *str1-*str2 == 0 && *str2!='\0')
{
str1++;
str2++;
}
return tmp;
}