精华内容
下载资源
问答
  • strtoul

    2021-09-01 16:00:33
    C 库函数 unsigned long int strtoul(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数(类型为 unsigned long int 型),base 必须介于 2 和 36(包含...

    1 作用

    将字符串转换为无符号长整型数。
    C 库函数 unsigned long int strtoul(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数(类型为 unsigned long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。

    2 函数声明

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

    参数:

    • str – 要转换为无符号长整数的字符串。
    • endptr – 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。
    • base – 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。
      参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时会根据情况选择用哪种进制:如果第一个字符是’0’,就判断第二字符如果是‘x’则用16进制,否则用8进制;第一个字符不是‘0’,则用10进制。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(’’)结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
      返回值:
      该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。

    3 代码示例

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
       char str[30] = "2030300 This is test";
       char *ptr;
       long ret;
    
       ret = strtoul(str, &ptr, 10);
       printf("数字(无符号长整数)是 %lu\n", ret);
       printf("字符串部分是 |%s|", ptr);
    
       return(0);
    }
    

    结果
    数字(无符号长整数)是 2030300
    字符串部分是 | This is test|

    展开全文
  • strtoul函数

    2021-07-01 22:21:06
    strtoul函数简介

    ================================================================================

    1.函数原型

    unsigned long int strtoul(const char *nptr, char **endptr, int base);
    unsigned long long int strtoull(const char *nptr, char **endptr,int base);
        1、参数nptr:字符串的起始地址。
    
        2、参数endptr: 返回字符串有效数字的结尾地址。如 123456fe789 则返回数字f的地址。
    
        3、参数base:转化基数。   
            参数 base 范围从236,或0。
            参数 base 代表 nptr 采用的进制方式,如 base 值为10 则采用 10 进制,若 base 值为16 则采用16 进制数等。
    

    2.功能描述

    convert a string to an unsigned long integer(把输入的字符串转换成数字).
    strtoul() 会扫描参数nptr 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(’\0’)结束转换,并将结果返回。

    3.所需头文件

      #include <stdlib.h>
    

    4.注意两点

    1、当 base 的值为 0 时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16 进制转换,
    遇到 '0' 前置字符则会使用 8 进制转换。
    
    2、若 endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,
    则表示该参数无效,或不使用该参数。本文最后的范例没有展示 endptr 参数的使用,
    你可以参考 strtol() 函数的范例来更加直观地了解 endptr 参数。
    

    5.示例

    实例一

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

    #include <stdio.h> 
    #include <stdlib.h> 
    int main () 
    {   
    	char buffer [256];   
    	unsigned long ul; 
        char * endptr;
        while(1)
    	{
    	   printf ("Enter an unsigned number: ");  
    	   fgets (buffer, 256, stdin);   
    	   ul = strtoul (buffer, &endptr, 2);   
           printf ("Value entered: %lu ,the address of the first invalid character is %d ,invalid character=%s\n", ul,endptr,endptr);   
    	   system("pause"); 
    	}
    	return 0; 
    } 
    

    测试结果:
    在这里插入图片描述
    实例二:
    输入字符串,base 的值为10,十进制转换。

    #include <stdio.h> 
    #include <stdlib.h> 
    int main () 
    {   
    	char buffer [256];   
    	unsigned long ul; 
        char * endptr;
        while(1)
    	{
    	   printf ("Enter an unsigned number: ");  
    	   fgets (buffer, 256, stdin);   
    	   ul = strtoul (buffer, &endptr, 10);   
           printf ("Value entered: %lu ,the address of the first invalid character is %d ,invalid character=%s\n", ul,endptr,endptr);   
    	   system("pause"); 
    	}
    	return 0; 
    } 
    

    测试结果:
    在这里插入图片描述
    实例三:
    输入字符串,base 的值为0的特殊情况。
    1、当 base 的值为 0 时,默认采用 10 进制转换,但如果遇到 ‘0x’ / ‘0X’ 前置字符则会使用 16 进制转换,遇到 ‘0’ 前置字符则会使用 8 进制转换。
    2、若 endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。本文最后的范例没有展示 endptr 参数的使用,你可以参考 strtol() 函数的范例来更加直观地了解 endptr 参数。

    #include <stdio.h> 
    #include <stdlib.h> 
    int main () 
    {   
    	char buffer [256];   
    	unsigned long ul; 
        char * endptr;
        while(1)
    	{
    	   printf ("Enter an unsigned number: ");  
    	   fgets (buffer, 256, stdin);   
    	   ul = strtoul (buffer, &endptr, 0);   
           printf ("Value entered: %lu ,the address of the first invalid character is %d ,invalid character=%s\n", ul,endptr,endptr);   
    	   system("pause"); 
    	}
    	return 0; 
    } 
    

    测试结果:
    在这里插入图片描述

    ————————————————
    版权声明:本文为CSDN博主「海月汐辰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_37858386/article/details/78458401

    6.补充说明

    strtol, strtoll, strtoul, strtoull
    convert a string to a (signed, unsigned ) long integer string
    声明:
    #include<stdlib.h> ( 这个是C标准库,与linux无关。这套函数是通用的。)
    long int strtol(const char *nptr, char **endptr, int base);
    long long int strtoll(const char *nptr, char **endptr, int base);
    unsigned long int strtoul(const char *nptr, char **endptr, int base);
    unsigned long long int strtoull(const char *nptr, char **endptr, int base);
    说明,第一个参数 nptr是要转化的字符串。第三个参数base说明nptr的进制。base 取值范围 0,2-36
    这几个函数会忽略nptr前面的空格( ’ ‘, ‘\t’, ‘\n’ ‘\f’, ‘\v’ ‘\r’ ,由isspace判定为真的字符)
    while (*nptr && isspace ( *nptr ) ) ++ nptr;
    然后遇到非合法字符结束;
    base = 2; 合法字符为0, 1
    base = 3; 合法字符为0,1, 2

    base = 11; 合法字符为0,1,…,9,a(A)

    base = 36;合法字符为0, 1, …,9,a(A),…,z(Z)。
    字符 a-z,是忽略大小写的,混着来也行,例如 strtol(“aA”, NULL, 11)依然能得到正确的结果。
    函数的第二个参数endptr可以为空,如果不为空,则 endptr 保存函数结束前的那个非合法字符的地址。
    如果没有合法字符,则 *endptr = nptr,函数返回0.
    例如:
    1.
    char *endptr;
    char nptr[]=“123abc”;
    int ret = strtol(nptr, &endptr, 10 );
    由于10进制里没有“数字”a,所以扫描到a,结束。
    这样 ret = 123;
    endptr = &nptr[3]; ( printf("%s", endptr);将得到字符串 abc )
    2.
    char nptr[]=" \n\t abc";
    int ret = strtol(nptr, &endptr, 10 );
    由于函数会忽略nptr前面的空格(’ ', ‘\n’…),所以,从字符a开始扫描,但是遇见的“第一个”即是不合法字符。
    所以函数结束。 ret=0; endptr = nptr;
    以下的讨论,会认为 nptr 前面没有空格,
    即执行过类似于while (*nptr &&isspace ( *nptr ) ) ++ nptr;
    如果base 为0.则分3种情况:
    如果nptr 以0x(零x)开头,则把nptr当成16进制处理。
    如果npstr以0(零)开头,则把nptr当成8进制处理。
    否则,把nptr当成10进制。
    对于函数执行错误,如传了一个非合法base,则errno会设置相关值

    展开全文
  • strtoul函数注意点

    千次阅读 2017-03-01 10:35:59
    strtoul

    表头文件

    #include<stdlib.h>

    函数定义

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

    函数说明

    strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时会根据情况选择用哪种进制:如果第一个字符是'0',就判断第二字符如果是‘x’则用16进制,否则用8进制;第一个字符不是‘0’,则用10进制。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
    

    注意点

    返回值为无符号long型数值,如果是负数会返回一个大正数。
    

    验证代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
        char buffer [256];
        unsigned long ul;
        printf ("Enter an unsigned number: ");
        fgets (buffer, 256, stdin);
        ul = strtoul (buffer, NULL, 10);
        printf ("Value entered: %lu.\n", ul);
        return 0;
    }

    linux下运行结果

    Enter an unsigned number: -100
    Value entered: 4294967196.
    
    展开全文
  • Strtoul command

    2018-11-15 10:14:31
    Strtoul command

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   
    function
    >

    strtoul                                                                           #include <stdlib.h> 

    unsigned long int strtoul (const char* str, char** endptr, int base);
    Convert string to unsigned long integer
    Parses the C-string str, interpreting its content as an integral number of the specified base, which is returned as an value of type unsigned long int.

    This function operates like strtol to interpret the string, but produces numbers of type unsigned long int (see strtolfor details on the interpretation process).

    Parameters

    str
    C-string containing the representation of an integral number.
    endptr
    Reference to an object of type char*, whose value is set by the function to the next character in str after the numerical value.
    This parameter can also be a null pointer, in which case it is not used.
    base
    Numerical base (radix) that determines the valid characters and their interpretation.
    If this is 0, the base used is determined by the format in the sequence (see strtol for details).

    Return Value

    On success, the function returns the converted integral number as an unsigned long int value.
    If no valid conversion could be performed, a zero value is returned.
    If the value read is out of the range of representable values by an unsigned long int, the function returns ULONG_MAX(defined in <climits>), and errno is set to ERANGE.

    Example

    展开全文
  • strtoul 函数

    2015-06-08 10:32:02
    strtoul  编辑  strtoul (将字符串转换成无符号长整型数) 相关函数  atof,atoi,atol,strtod,strtol 表头文件  #include  定义函数  unsigned long strtoul(const char *nptr,char **endptr,int ...
  • strtoul(将字符串转换成无符号长整型数)相关函数 atof,atoi,atol,strtod,strtol表头文件 #include定义函数 unsigned long int strtoul(const char *nptr,char函数说明 strtoul()会将参数nptr字符串根据参数base...
  • strtoul kstrtoul函数用法

    千次阅读 2020-08-17 09:07:14
    C 库函数 - strtoul() C 标准库 - <stdlib.h> C 标准库 - <stdlib.h> 描述 C 库函数 unsigned long int strtoul(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base ...
  • strtoul 解析

    2013-03-12 00:01:17
    用到strtoul总结一下 unsigned long int strtoul(const char *nptr,char **endptr,intbase); nptr:待转化的字符串 base:要采用的进制方式 : 如base值为10则采用10进制,若base值为16则采用1
  • c语言库函数strtoul

    2017-10-30 18:53:01
    unsigned long int strtoul(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数(类型为 unsigned long int 型),base 必须介于 2 和 36(包含)之间...
  • strtoul函数的用法

    千次阅读 2018-06-25 10:16:12
    strtoul() 函数源自于“string to unsigned long”,用来将字符串转换成无符号长整型数(unsigned long),其原型为: unsigned long strtoul (const char* str, char** endptr, int base);【参数说明】str 为要转换...
  • atoi,atol,strtod,strtol,strtoul实现类型转换.doc
  • strtoul()函数

    2020-07-30 16:51:38
    C语言 strtoul()函数 ------ 字符串转换成无符号长整型 unsigned long int strtoul(const char *str, char **endptr, int base) 把参数str所指向的字符串根据给定的base转换为一个无符号长整数. 参数: str-- 要...
  • strtoul函数应用

    2016-09-22 17:05:43
    百度定义:strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。 例如strtoul...
  • C语言strtoul函数简介

    万次阅读 2017-11-06 16:46:15
    C语言strtoul函数简介 一、函数原型:  unsigned long int strtoul(const char *nptr, char **endptr, int base);  unsigned long long int strtoull(const char *nptr, char **endptr,int base);  
  • strtoul库函数

    2012-05-24 10:40:06
    函数说明 strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时则...
  • 主要介绍了浅析C语言中strtol()函数与strtoul()函数的用法,注意其将字符串转换成long型的区别,需要的朋友可以参考下
  • strtoul 函数解析

    千次阅读 2016-07-26 09:56:19
    unsigned long strtoul(const char *nptr,char **endptr,int base ) 参数1:字符串起始地址 参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。 参数3:转换基数。当base=0,自动判断字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,274
精华内容 3,309
关键字:

strtoul