C语言 数字与字符/字符串转换

数字转字符

ASCII码操作

只能将数字转为字符,方法为将要转换的数字直接加上数字0的ASCII码,如9转换为9 + ‘0’

数字转字符串

itoa函数

itoa函数不是C标准函数,glibc里面没有实现,但也可以了解下

函数原型:

char* itoa(int value,char*string,int radix);

value:要转换的数字
string:转换后的字符串
radix:表示打印的进制形式,范围2~36

sprintf函数
#include <stdio.h>
int sprintf(char *str, const char *format, ...);

用法与printf基本一致,只不过sprintf将输出放在str指向的字符数组中
可以通过

sprintf(str,"%d",value)

将value保存的数字转为字符串保存在str中,具体代码如下·

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main(void)
{int i = 0;int val = 0;char array[6] = "abcde";val = sprintf(array, "%d3", 12);for (i = 0; i < 6; i++){printf("%c ", array[i]);}printf("\n%d\n", val);return 0;
}

打印结果为:

1 2 3  e
3

可以看到vsprintf将数字12转为字符串后,与"%d3"中的3拼接后成了字符串"123",然后将该字符串保存在array中,同时返回写入的字符串的长度3,要强调的是vsprintf会自动添加空字符,以及返回值不包括空字符。

字符转数字

ASCII码操作

通过减去0的ASCII码,将字符转为数字,如’9’转为’9’ - ‘0’ = 9

字符/字符串转数字

strtol函数

函数原型如下:

#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);

base指定nptr指向的字符串中数值的进制,然后strtol按照这个进制的表示规则从第一个非空白字符取读取字符串,如果遇到非法字符则停止,例如,如果base为10,则字符串中的a-f就被认为是非法的,如果base为16,a-f就是有效的。
endptr用来返回nptr中指定进制数字后的第一个非有效字符,如:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main(void)
{char *endptr = NULL;long int val = 0;char array[6] = "0xa1g";val = strtol(array, &endptr, 16);printf("array address:%p\n", array);printf("endptr address:%p\n", endptr);printf("val:%ld\n", val);return 0;
}

打印结果为

array address:0x7ffd7fd4a9e2如果
endptr address:0x7ffd7fd4a9e6
val:161

可以看到,"0xa1g"按照16进制转换,0 x a 1四个字符都是合法的,转换为十进制为161,字符g不是合法的,因此它的地址通过endptr返回
endptr可以设置为NULL

base的取值可以是2-36,也可以是0
base为0时,按照下面优先级处理
如果数字开头有0x或0X,则按照16进制读
如果数字开头是0,则按照8进制读
按照10进制读

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main(void)
{char *endptr = NULL;long int val = 0;char array1[6] = "0x11";char array2[6] = "011";char array3[6] = "11";val = strtol(array1, NULL, 0);printf("0x11:%ld\n", val);val = strtol(array2, NULL, 0);printf("011:%ld\n", val);val = strtol(array3, NULL, 0);printf("11:%ld\n", val);return 0;
}

输出如下:

0x11:17
011:9
11:11

另有strroll,strtoul,strtoull,用法和strrol类似,其中strtoul同样会识别负号

atoi函数

glibc没有itoa函数,但却有atoi函数,原型如下:

#include <stdlib.h>
int atoi(const char *nptr);

nptr指向要转换的字符串
返回值为转换后的数字
atoi相当于strtol(nptr,NULL,10)

C语言 数字与字符/字符串的相互转换相关推荐

  1. c 语言整形转换为字符串,C 语言整数与字符串的相互转换

    一.简述 C 语言中整数与字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现. 二.整数转字符串 1.拓展函数 itoa itoa (表示 integer to alphan ...

  2. mysql c语言数字转字符串函数_C++_c语言标准库中字符转换函数和数字转换函数,字符转换为数字: #includest - phpStudy...

    c语言标准库中字符转换函数和数字转换函数 字符转换为数字: #include atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1); atol();将字符转化为长整 ...

  3. c语言c判断字符数字,c语言问题求教 利用函数判断字符串中是否全为数字

    c语言问题求教 利用函数判断字符串中是否全为数字 答案:4  信息版本:手机版 解决时间 2018-12-22 19:42 已解决 2018-12-22 08:52 c语言问题求教 利用函数判断字符串 ...

  4. c语言:输入一个字符串,统计字母,数字,空格出现的个数,c - 统计字符串字母,空格,数字,其他字符的个数和行数....

    #include #include using namespace std; /* 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. */ void count() { //统 ...

  5. JAVA语言中数字、字符和字符串处理

    前言: JAVA语言中针对数字.数学运算.字符.字符串有专门的类,分别是Number.Math.Character和String. 1.数字: JAVA对数字处理的相关方法被封装在java.lang包 ...

  6. 数字、字符和字符串之间的相互转换

    在数字和字符之间转换 一.整数转字符 1.在后面加'0'即可,如:'1'+'0' 这样做可行是因为字符0到字符9在ascii编码时是连续的,字符0的ascii值是48,字符1的ascii值是49,其他 ...

  7. 字符和数字的相互转换,数字和字符串的相互转换

    @c++[TOC]字符和数字之间的相互转换,数字和字符串的相互转换 列表: 一,数字变字符 二,字符变数字 三,字符串变数字 四,数字变字符串 一,数字变字符 二,字符变数字 字符和数字的转换通过as ...

  8. c语言中输入字符转换成整数,c语言数字字符串转换成整数 C语言中如何将数字变成字符串啊?...

    C语言:把数字字符串转换成整型数字不懂时,别乱说:懂得时,别多说:心乱时,慢慢说:没话时,就别说. 运行环境:TC2. 把数字字符串转换成整型数字.比如说小编输入一个数字字符当你年轻时,你以为什么都有 ...

  9. ACMNO.40 C语言-子串 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串

    题目描述 有一字符串,包含n个字符. 写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串. 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 6 abcdef 3 样 ...

最新文章

  1. torch.var()、样本方差、母体方差
  2. 仿中国比特币首页趋势图,折线图,k线图
  3. Linux下的一些问题收集及解决方法(二)
  4. oracle to_char FM099999
  5. 模式识别之基础---使用纹理滤波器分割图像
  6. protobuf生成
  7. Win7+Ubuntu双系统启动项修复总结
  8. git新建项目并push进去
  9. 一文理清面向对象(封装、继承、多态)+ 实战案例
  10. onpagefinished等了很久才执行_其实,无所事事的日子才过得最累
  11. T-Sql(一)简单语法
  12. 整理收藏-mysqldump导出数据库
  13. Python学习入门基础教程(learning Python)--4.3 Python的for嵌套
  14. PyQt5将ui文件编译为py文件的方法
  15. ef mysql 中文乱码,mysql解決中文亂碼問題
  16. lunix入侵别人电脑_排查Linux机器被入侵的11个步骤
  17. python语言程序设计实践教程陈东实验八的答案_大学生C语言程序设计(第四版 谭洪强)实验8答案...
  18. python录音pyaudio_Python开发之路(1)-用pyaudio录制和广播,使用,Pyaudio,进行,录音,播音...
  19. 排行前五的web3风投公司2022年都投了什么
  20. jsp学生考勤信息系统

热门文章

  1. 【C】C语言中的设计模式
  2. 简单操作 Cookie 注册登录
  3. 关于蓝屏错误IRQL_NOT_LESS_OR_EQUAL
  4. 一行代码实现微信多开
  5. 几种常见的黑客攻击手段
  6. vep加密视频破解转换为mp4教程
  7. 计算机的时钟设置错误,错误:系统时钟已被设置回过去的时间。 这是不允许的!...
  8. 电脑无限重启 服务器,Windows10系统开机提示无法连接到sens服务无限重启如何解决...
  9. kendo-ui 导出PDF乱码解决
  10. Android中android:digits限制无效原因