当前位置: 首页 > 编程笔记 >

C语言实现将字符串转换为数字的方法

危烨煜
2023-03-14
本文向大家介绍C语言实现将字符串转换为数字的方法,包括了C语言实现将字符串转换为数字的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C语言实现将字符串转换为数字的方法。分享给大家供大家参考。具体实现方法如下:

C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)的数字。以下是用atoi()函数将字符串转换为整数的一个例子:

# include <stdio. h>

# include <stdlib. h>

void main (void) ;

void main (void)

{

    int num;

    char * str = "100";

    num = atoi(str);

    printf("The string 'str' is %s and the number 'num' is %d. \n",str, num);

}

 
atoi()函数只有一个参数,即要转换为数字的字符串。atoi()函数的返回值就是转换所得的整型值。  

下列函数可以将字符串转换为数字:
------------------------------------------------------------------------
    函数名    作  用
------------------------------------------------------------------------
 atof()     将字符串转换为双精度浮点型值
 atoi()     将字符串转换为整型值
 atol()     将字符串转换为长整型值
 strtod()   将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字
 strtol()   将字符串转换为长整值,并报告不能被转换的所有剩余数字
 strtoul()  将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字
------------------------------------------------------------------------ 
 
将字符串转换为数字时可能会导致溢出,如果你使用的是strtoul()这样的函数,你就能检查这种溢出错误。请看下例: 

# include <stdio. h>

# include <stdlib. h>

# include <limits. h>

void main(void);

void main (void)

{

    char* str = "1234567891011121314151617181920" ;

    unsigned long num;

    char * leftover;

    num = strtoul(str, &leftover, 10);

    printf("Original string: %s\n",str);

    printf("Converted number: %1u\n" , num);

    printf("Leftover characters: %s\n" , leftover);

}

在上例中,要转换的字符串太长,超出了无符号长整型值的取值范围,因此,strtoul()函数将返回ULONG_MAX(4294967295),并使。char leftover指向字符串中导致溢出的那部分字符;同时,strtoul()函数还将全局html" target="_blank">变量errno赋值为ERANGE,以通知函数的调用者发生了溢出错误。函数strtod()和strtol()处理溢出错误的方式和函数strtoul()完全相同,你可以从编译程序文档中进一步了解这三个函数的有关细节。

希望本文所述对大家的C语言程序设计有所帮助。

 类似资料:
  • 我有一根绳子, 我想把它转换成一个字节数组。 有人能在这方面引导我吗?我尝试了以下代码,但我得到了ASCII中的数据。我不想那样。

  • 本文向大家介绍C#实现将千分位字符串转换成数字的方法,包括了C#实现将千分位字符串转换成数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例主要实现了C#将千分位字符串转换成数字的方法,对C#初学者而言有一定的借鉴价值,主要内容如下: 主要功能代码如下: 单元测试如下: 感兴趣的读者可以自己测试一下,希望对大家学习C#有所帮助!

  • 本文向大家介绍C语言中一些将字符串转换为数字的函数小结,包括了C语言中一些将字符串转换为数字的函数小结的使用技巧和注意事项,需要的朋友参考一下 C语言atoi()函数:将字符串转换成int(整数) 头文件: atoi() 函数用来将字符串转换成整数(int),其原型为: 【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace(

  • 本文向大家介绍C++实现数字转换为十六进制字符串的方法,包括了C++实现数字转换为十六进制字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++实现数字转换为十六进制字符串的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C++程序设计有所帮助。

  • 我已经扫描ABCDEFGHIJK与fscanf成一个char数组[26]。然后我得到了ABCDEFGHIJK使用for进入另一个数组[11]。现在我需要一个ABCDEFGHIJK. mp4数组[15],以便将该文件名输入重命名函数。 除了printf、scanf之外,我对C编程知之甚少。 上面的代码似乎有效,但我想知道是否有更简单的方法(特别是对于更大的阵列)? 澄清:我有一个txt文件,格式是包

  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字