字符串簡單操作典型例題

統計字符串中單詞的個數

int NumWord(char *str)
{
	assert(str != NULL);
	int count = 0;
	while (*str != 0)
	{
		if (isalpha(*str) && !isalpha(*(str + 1))  //isalpha()是一個判斷字符是否爲英文字母的函數
		{
			count++;
		}
		str++;
	}
}

將一個字符串的前n位複製到新的字符串中

char *My_strncpy(char *dest, char *src, int n)
{
	assert(dest != NULL && src != NULL);
	assert(n > 0 && n < strlen(src));
	char *p = dest;
	for (int i = 0; *src != '\0'&&i < n; i++)
	{
		dest[i] = src[i];
	}
	return p;
}

將字符轉化爲數字

int My_atoi(char *str)將字符串轉化爲數字
{
	int num = 0;
	while (*str = ' ')
	{
		str++;
	}
	while (*str == '-')
	{
		printf("-");
		str++;
	}
	while (isdigit(*str))   //isdigit()是一個檢查參數是否爲十進制數字字符的函數
	{
		num = num * 10 + (*str - '0');
		str++;
	}
	return num;
}

將數字轉化爲字符

char *My_itoa(char *str, int num)
{
	int i = 0;
	while (num != 0)
	{
		str[i] = num % 10 + '0';
		num = num / 10;
		i++;
	}
	str[i] = '\0';//手動賦值
	i--;
	for (int j = 0; j < i; j++, i--)//逆置
	{
		char ch = str[j];
		str[j] = str[i];
		str[i] = ch;
	}
	return str;
}

比較兩個字符串是否相等

int My_strcmp(const char *str1, const char *str2)
{

	int tmp = 0;
	while ((tmp = *str1 - *str2) == 0 && *str2 != '\0')//比較的是ASCII值
	{
		str1++;
		str2++;
	}
	return tmp;
}

比較兩個字符串的前n個字符是否相等

int My_strcmp(const char *str1, const char *str2, int n)
{

	int tmp = 0;
	int i = 1;
	while ((tmp = *str1 - *str2) == 0 && *str2 != '\0'&&i < n)
	{
		str1++;
		str2++;
		i++;
	}
	return tmp;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章