#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
/*
----------------------------------------------------------
函数名 作 用
----------------------------------------------------------
itoa() 将整型值转换为字符串
ltoa() 将长整型值转换为字符串
ultoa() 将无符号长整型值转换为字符串
atoi()
atol()
atof()
----------------------------------------------------------
*/
//上述函数与ANSI标准是不兼容的。能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数
//sprintf(str, " %d" , num);
/*
函数名 作 用
-------------------------------------------------------------------------
ecvt() 将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点
fcvt() 以指定位数为转换精度,余同ecvt()
gcvt() 将双精度浮点型值转换为字符串,转换结果中包含十进制小数点
-------------------------------------------------------------------------
*/
/*
数字转字符 value + '0'
字符转数字 ch -'0'
*/
int my_atoi(char* str)
{
int value=0;
while(*str >= '0' && *str <= '9')
{
value *= 10;
value += *str-'0';
str++;
}
return value;
}
/*
拼接两个字符串
*/
char* my_strcat(char *dst, const char * src)
{
char *dst_t; //新字符串
//分配内存,否则返回的是局部变量
dst_t = (char *)malloc(sizeof(dst) + sizeof(src));
char *start = dst_t;
assert(dst && src); // 断言是否为空
while(*dst_t = *dst)
{
dst_t++;
dst++;
}
while(*dst_t = *src)
{
dst_t++;
src++;
}
*dst_t = '\0';
return start;
}
char* my_strcpy(char *strDest, const char *strScr)
{
char *address=strDest;
assert((strDest != NULL) && (strScr != NULL));
while(*strScr)
{
*strDest++ = *strScr++;
}
*strDest = '\0';
return address;
}
int my_strcmp (const char *str1,const char *str2)
{
int len = 0;
assert((str1 != '\0') && (str2 != '\0'));
while(*str1 && *str2 && (*str1 == *str2))
{
str1++;
str2++;
}
return *str1-*str2;
}
int my_strlen(const char *str)
{
int len = 0;
assert(str != NULL);
while(*str++)
{
len++;
}
return len;
}
int main ()
{
int i;
char buffer[256];
printf ("Enter a number: ");
//fgets (buffer, 256, stdin);
//i = my_atoi(buffer);
char temp[100];
//my_strcpy(temp,buffer);
puts(temp);
char t1[] = "hello";
char* b = my_strcat(t1,"world");
puts(b);
//printf ("The value entered is %d. Its double is %d.\n",i,i*2);
return 0;
}
C语言字符串函数的一些实现
最新推荐文章于 2023-07-15 10:17:29 发布