C函数之index、strtoul

 index函数

函数定义:

#include<strings.h>

char *index(const char *s, int c);

函数说明:

找出参数s字符串中第一个出现参数c的地址,然后将该字符串出现的地址返回。字符串结束字符(NULL)也视为字符串的一部分。

返回值:

如果找到指定的字符,则返回字符所在地址,否则返回NULL

实例:

/***
index.c
***/
#include<stdio.h>
#include<strings.h>

int main()
{
    char *s = "abcdef1234567abcdef";
    char *p = NULL;

    p = index(s, 'b');
    printf("%s
",p);
    return 0;
}

运行结果:

 

strtoul函数

函数原型:

#include<stdlib.h>

unsigned long int strtoul(const char *nptr, char **endptr, int base);

unsigned long long int strtoull(const char *nptr, char **endptr,int base);

参数介绍:

nptr:    字符串起始位置

endptr: 返回字符串有效数字的结尾地址。如123456fe789,则返回f的地址。

base:   转化基数。范围2~36,或0代表nptr采用的进制方式。

功能描述:

把输入的字符串转换成数字,该函数会扫描参数nptr字符串,跳过签过的空白字符(例如空格,tab键,可以通过isspace()函数来检测),知道遇到数字或正负符号才开始转换,在遇到非数字或字符串结束时(’’)结束转换,并将结果返回。

注意:

当 base 的值为 0 时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16 进制转换,遇到 '0' 前置字符则会使用 8 进制转换。

若 endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。

实例1:

输入字符串,base值为2,二进制转换。

/***
strtoul_base2.c
***/
#include<stdio.h>
#include<stdlib.h>

int main()
{
    char buffer[256];
    unsigned long lu;
    char *endptr;

    while(1)
    {
        printf("Enter an unsigned number: ");
        fgets(buffer, 256, stdin);
        lu = strtoul(buffer, &endptr, 2);
        printf("Value entered:%lu, the address of first invalid character is %d, invalid characer = %s
",
                lu,endptr,endptr);
    }

    return 0;
}
原文地址:https://www.cnblogs.com/wanghao-boke/p/11821533.html