您的位置:首页 > 编程语言

常用库函数编程实现用法总结(三) strchr strrev memset strtod

2013-04-21 22:38 621 查看
/******************************************************************************

函数原型:extern char *strchr(char *str,char character)

参数说明:str为一个字符串的指针,character为一个待查找字符。

所在库名:#include <string.h>

函数功能:从字符串str中寻找字符character第一次出现的位置。

返回说明:返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。

The strchr() and strrchr() functions return a pointer to the matched character or NULL

if the character is not found.

*******************************************************************************/

char *mystrchr(const char * str, int ch)

{

    assert(str != NULL);

    for( ; *str != (char)ch; str++)

        if(*str == '\0')

            return NULL;

    return (char *)str;

}

int main()

{

    char str[] = "This is a sample string";

    char *pch = strchr(str,'s');

    printf("The first occurence of 's' found at : %d",pch - str + 1);

    return 0;

}

/*************************************************************

原型:extern char *strrev(char *s);

用法:#include <string.h>

功能:把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。

说明:返回指向颠倒顺序后的字符串指针。

Reverses the order of characters in the string.

The terminating null character remains in place.

把字符串的所有字符的顺序颠倒过来(不包括空字符NULL)。

返回指向颠倒顺序后的字符串指针。

**************************************************************/

char * my_strrev(char *str)

{

    char *right = str;

    char *left = str;

    char ch;

    while (*right) right++;

    right--;

    while (left < right)

    {

        ch = *left;

        *left++ = *right;

        *right-- = ch;

    }

    return(str);

}

/*****************************************************************

原型:extern void *memset(void *buffer, int c, int count);

功能:把buffer所指内存区域的前count个字节设置成字符c。

包含头文件:<string.h>

注意这个函数是字符串函数,所以一定要包含字符串头文件。

Sets the first "count" bytes of the memory starting at "dst" to the character value "val".

把dst所指内存区域的前count个字节设置为val。返回指向dst的指针。

********************************************************************/

void * my_memset(void *dst,int val,int count)

{

    void *p = dst;

    while (count--)

    {

        *(char *)dst = (char)val;

        dst = (char *)dst + 1;

    }

    return p;

}

void *memset(void *src, int c, size_t count)

{

    assert(src!=NULL);

    char *tmpsrc=(char*)src;

    while(count--)

        *tmpsrc++ =(char)c;

    return src;

}

/**************************************************************************

strtod(将字符串转换成浮点数)

相关函数 atoi,atol,strtod,strtol,strtoul

表头文件 #include<stdlib.h>

定义函数 double strtod(const char *nptr,char **endptr);

函数说明 strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上

数字或正负符号才开始做转换,到出现非数字或字符串结束时

('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇

到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字

符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。

返回值 返回转换后的浮点型数。

/*将字符串a,b,c 分别采用10,2,16 进制转换成数字*/

#include<stdlib.h>

int main()

{

    char a[]=”1000000000”;

    char b[]=”1000000000”;

    char c[]=”ffff”;

    printf(“a=%d\n”,strtod(a,NULL,10));

    printf(“b=%d\n”,strtod(b,NULL,2));

    printf(“c=%d\n”,strtod(c,NULL,16));

}

/**********************

a=1000000000

b=512

c=65535

***********************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息