C语言 数字与字符/字符串的相互转换
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语言 数字与字符/字符串的相互转换相关推荐
- c 语言整形转换为字符串,C 语言整数与字符串的相互转换
一.简述 C 语言中整数与字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现. 二.整数转字符串 1.拓展函数 itoa itoa (表示 integer to alphan ...
- mysql c语言数字转字符串函数_C++_c语言标准库中字符转换函数和数字转换函数,字符转换为数字:
#includest - phpStudy...
c语言标准库中字符转换函数和数字转换函数 字符转换为数字: #include atoi();将字符转换为整型 例:char ch1;int i=atoi(ch1); atol();将字符转化为长整 ...
- c语言c判断字符数字,c语言问题求教 利用函数判断字符串中是否全为数字
c语言问题求教 利用函数判断字符串中是否全为数字 答案:4 信息版本:手机版 解决时间 2018-12-22 19:42 已解决 2018-12-22 08:52 c语言问题求教 利用函数判断字符串 ...
- c语言:输入一个字符串,统计字母,数字,空格出现的个数,c - 统计字符串字母,空格,数字,其他字符的个数和行数....
#include #include using namespace std; /* 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. */ void count() { //统 ...
- JAVA语言中数字、字符和字符串处理
前言: JAVA语言中针对数字.数学运算.字符.字符串有专门的类,分别是Number.Math.Character和String. 1.数字: JAVA对数字处理的相关方法被封装在java.lang包 ...
- 数字、字符和字符串之间的相互转换
在数字和字符之间转换 一.整数转字符 1.在后面加'0'即可,如:'1'+'0' 这样做可行是因为字符0到字符9在ascii编码时是连续的,字符0的ascii值是48,字符1的ascii值是49,其他 ...
- 字符和数字的相互转换,数字和字符串的相互转换
@c++[TOC]字符和数字之间的相互转换,数字和字符串的相互转换 列表: 一,数字变字符 二,字符变数字 三,字符串变数字 四,数字变字符串 一,数字变字符 二,字符变数字 字符和数字的转换通过as ...
- c语言中输入字符转换成整数,c语言数字字符串转换成整数 C语言中如何将数字变成字符串啊?...
C语言:把数字字符串转换成整型数字不懂时,别乱说:懂得时,别多说:心乱时,慢慢说:没话时,就别说. 运行环境:TC2. 把数字字符串转换成整型数字.比如说小编输入一个数字字符当你年轻时,你以为什么都有 ...
- ACMNO.40 C语言-子串 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串
题目描述 有一字符串,包含n个字符. 写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串. 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入 6 abcdef 3 样 ...
最新文章
- torch.var()、样本方差、母体方差
- 仿中国比特币首页趋势图,折线图,k线图
- Linux下的一些问题收集及解决方法(二)
- oracle to_char FM099999
- 模式识别之基础---使用纹理滤波器分割图像
- protobuf生成
- Win7+Ubuntu双系统启动项修复总结
- git新建项目并push进去
- 一文理清面向对象(封装、继承、多态)+ 实战案例
- onpagefinished等了很久才执行_其实,无所事事的日子才过得最累
- T-Sql(一)简单语法
- 整理收藏-mysqldump导出数据库
- Python学习入门基础教程(learning Python)--4.3 Python的for嵌套
- PyQt5将ui文件编译为py文件的方法
- ef mysql 中文乱码,mysql解決中文亂碼問題
- lunix入侵别人电脑_排查Linux机器被入侵的11个步骤
- python语言程序设计实践教程陈东实验八的答案_大学生C语言程序设计(第四版 谭洪强)实验8答案...
- python录音pyaudio_Python开发之路(1)-用pyaudio录制和广播,使用,Pyaudio,进行,录音,播音...
- 排行前五的web3风投公司2022年都投了什么
- jsp学生考勤信息系统
热门文章
- 【C】C语言中的设计模式
- 简单操作 Cookie 注册登录
- 关于蓝屏错误IRQL_NOT_LESS_OR_EQUAL
- 一行代码实现微信多开
- 几种常见的黑客攻击手段
- vep加密视频破解转换为mp4教程
- 计算机的时钟设置错误,错误:系统时钟已被设置回过去的时间。 这是不允许的!...
- 电脑无限重启 服务器,Windows10系统开机提示无法连接到sens服务无限重启如何解决...
- kendo-ui 导出PDF乱码解决
- Android中android:digits限制无效原因