C语言基础 入门学习(七)

一、计算字符串单词数

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;
}

猜你喜欢

转载自blog.csdn.net/zhangfei5354/article/details/83450501