免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5840 | 回复: 12
打印 上一主题 下一主题

char[]中读取数值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-08 18:33 |只看该作者 |倒序浏览
用字符串传递数值,BT的做法,
实在想不起来了,大家看看怎么算出来,有没有现成的函数可用?


char buf[3]={0};

buf[0]=202;
buf[1]=90;
buf[2]=222;
process(buf);
....

void process(char *p)

{
  在process函数里,再得到这3个十进制数.
}


谢谢

论坛徽章:
0
2 [报告]
发表于 2010-08-08 19:17 |只看该作者
XX=p[0];
XX=p[1];
XX=p[2];

是这个意思?

论坛徽章:
0
3 [报告]
发表于 2010-08-08 19:24 |只看该作者
帖子意义不明,到底要什么功能……

论坛徽章:
0
4 [报告]
发表于 2010-08-08 20:34 |只看该作者
帖子意义不明,到底要什么功能……
daybreakcx 发表于 2010-08-08 19:24



   

难道我说的真不清楚?!
好吧我在描述一遍,

模型就是这样的

void process(char *p);

main()
{
   char buf[3]={0};
     buf[0]=202;      //主调函数里赋值
     buf[1]=90;
     buf[2]=222;
   process(buf);
}


void process(char *p)
{
     //在process函数里,要对主调函数赋值的那些数进行处理,如何取得这些数(本例中就是这三个数:202,90,222)
}
PS:
维护别人的代码就是无趣,至今不明白为什么用char来传递数值?

论坛徽章:
0
5 [报告]
发表于 2010-08-08 20:55 |只看该作者
难道我说的真不清楚?!
好吧我在描述一遍,

模型就是这样的

void process(c ...
mezilla 发表于 2010-08-08 20:34

char还是int什么的无所谓(当数值小于256的时候),存的二进制序列没有什么区别.照原样提出来好了.当然,像222这样的大于char所能表示的最大数值,会被解释成负数.要在函数里再取回成正数,加个强制类型转换就是了
XX = (unsigned char)p[0];

论坛徽章:
0
6 [报告]
发表于 2010-08-08 20:59 |只看该作者
直接取出就行,楼上说的很详细

论坛徽章:
0
7 [报告]
发表于 2010-08-08 21:01 |只看该作者
我很好奇,他怎么判断数组边界的。。

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
8 [报告]
发表于 2010-08-08 21:02 |只看该作者
字符型也是整型在C里 你直接引用就可以了,字符是8位的,注意取值范围和符号位问题,
还有传数组进去的时候最后加一个元素个数的参数

  1. void process(char *p, int n)
  2. {

  3. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-08-08 21:11 |只看该作者
char还是int什么的无所谓(当数值小于256的时候),存的二进制序列没有什么区别.照原样提出来好了.当然,像22 ...
liwangli1983 发表于 2010-08-08 20:55



   
3ks,
其他的也感谢,这只是一个简单的模型,原函数参数要复杂的多,边界控制自然也有

论坛徽章:
0
10 [报告]
发表于 2010-08-08 21:37 |只看该作者
这都什么跟什么啊?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP