LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1941|回复: 7

怎么将整型变为字符串?

[复制链接]
发表于 2005-6-16 14:47:14 | 显示全部楼层 |阅读模式
int a = 123;
char b;

如何将b == "123"???
 楼主| 发表于 2005-6-16 14:53:20 | 显示全部楼层
好像sprintf可以完成,大虾给个例子好吗?

thx
回复 支持 反对

使用道具 举报

发表于 2005-6-16 16:07:33 | 显示全部楼层
可以这样写:
[php]#include <stdio.h>

main ()
{
        int a = 123;
        char b[5];
        sprintf(b, "%i", a);
        printf("%s\n", b);
}[/php]
回复 支持 反对

使用道具 举报

发表于 2005-6-16 19:38:15 | 显示全部楼层
最好用snprintf, sprintf有可能写字符串越界。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-16 20:19:17 | 显示全部楼层
thx

got it
回复 支持 反对

使用道具 举报

发表于 2005-6-16 20:32:27 | 显示全部楼层
Post by JBug
最好用snprintf, sprintf有可能写字符串越界。


呵呵,实际上用得多的是sprintf。snprintf在windows下没有,而且它的定义也一直不是很明确。
回复 支持 反对

使用道具 举报

发表于 2005-6-17 08:59:24 | 显示全部楼层
因为我以前在linux下用sprintf有过越界的错误,找了好久才找到,从那以后,我就一直用snprintf
回复 支持 反对

使用道具 举报

发表于 2005-6-17 13:59:57 | 显示全部楼层
Post by macarthor
int a = 123;
char b;

如何将b == "123"???

有这种可能么 按照你的定义方法b可是字符,
b=="123"  b 可就变成了字符串了。

如果你的原意是说怎么把整型变成字符那我可以告诉你,用toascii()类的函数就可以了
就像atoi()一样他们有一个类别,你可以查看这个类别里的所有函数,选择你要用的。
至于楼上几位讨论的sprintf 和snprintf 我不是要否认你们的说法,我只是觉得你们说的有
些歧义,函数本身没有什么安不安全的分别,而是你的思想,试问你在连接字符串之前全部做了
检查还会越界么,snprintf本来就是gnu对sprintf的包装,这样的包装还有很多,不过是为了
用起来方便,可是你如果在非gnu系统下呢?windows下面就没有这个函数的。
标准c函数基本上是不能拿过来就用的(软件项目中)大部分需要根据自己的要求包装的。


toascii(将整型数转换成合法的ASCII 码字符)  
相关函数  isascii,toupper,tolower

表头文件  #include<ctype.h>

定义函数  int toascii(int c)

函数说明  toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。

返回值  将转换成功的ASCII码字符值返回。

范例  #include<stdlib.h>
main()
{
int a=217;
char b;
printf(“before toascii () : a value =%d(%c)\n”,a,a);
b=toascii(a);
printf(“after toascii() : a value =%d(%c)\n”,b,b);
}

执行  before toascii() : a value =217()
after toascii() : a value =89(Y)


atoi(将字符串转换成整型数)  
相关函数  atof,atol,atrtod,strtol,strtoul

表头文件  #include<stdlib.h>

定义函数  int atoi(const char *nptr);

函数说明  atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。

返回值  返回转换后的整型数。

附加说明  atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。

范例  /* 将字符串a 与字符串b转换成数字后相加*/
#include<stdlib.h>
mian()
{
char a[]=”-100”;
char b[]=”456”;
int c;
c=atoi(a)+atoi(b);
printf(c=%d\n”,c);
}

执行  c=356
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表