51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1865|回复: 9
打印 上一主题 下一主题

[原创] 求助求助!!char *p。。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-5-6 08:54:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
char *p
char  p【4】=“”引号里元素要写十六进制和十进制,怎么写啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-5-6 17:55:07 | 只看该作者
不懂啥意思
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-5-6 21:17:22 | 只看该作者
int main(void)
{
        char *p;
        p = (char *)malloc(sizeof(char) * 3);
        memset(p, '\0', sizeof p);
        p[0] = 48;
        p[1] = 0x30;
        printf("%s\n", p);
        free(p);
        return 0;
}

其中,48是十进制,0x30是十六进制的, 都对应于0的ascii码,楼主想要的是不是这个意思?

[ 本帖最后由 bestgo 于 2010-5-6 21:35 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-5-7 08:49:45 | 只看该作者

回复 3# 的帖子

是啊,我的意思是如果这两个元素同时放在一个字符串里,也就是说P对应的是一个字符串数组。那么打个比方
p【】=“480x30”这个怎么表示啊。先现在我的测试脚本自动生成了p init(初始值)=“”  我需要往引号里写这两个元素

[ 本帖最后由 zx59838 于 2010-5-7 08:51 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-5-7 10:23:53 | 只看该作者
这样定义一个字符串数组:
char *p[] = { "48", "0x30"};
还是没怎么搞懂你的需求。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-5-7 11:23:10 | 只看该作者

回复 5# 的帖子

5楼强人~~~
等待楼主说明白到底要干什么。

膜拜五楼~
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-5-7 12:08:01 | 只看该作者

回复 5# 的帖子

就是说我的脚本生成了p  init=“” 要给引号里赋值。给你看下源代码:   
其中有这样一条判定语句 if ((pSrc >= 0x30 )&& (pSrc <= 0x39)),我理解的是pSrc指向的数组里应该就是十进制和十六进制的集合。但是测试脚本p的值是一个字符串,我就不知道怎么把十进制和十六进制一起写进引号去呢


/***********************************************************************
* decode data from MIPRUDP into pDst in loose format
* pSrc: source string address
* pDst: destination data address
* return: dst data length loose structrue
***********************************************************************/
INT16U DecodeUDP(char *pSrc,INT16U *pDst)
{
        INT16U SrcLen;
        INT16U i;
        INT16U tmp;

        if(NULL==pSrc) return 0;
        
        SrcLen = strlen(pSrc);
        
        for(i=0;i<SrcLen;i+=2)
        {
                // decode
                if ((pSrc >= 0x30 )&& (pSrc <= 0x39))
        {
            tmp = (pSrc - '0') << 4;
        }
        else
        {
            tmp = (pSrc - 'A' + 10) << 4;
        }

                if(pSrc[i+1]>='0' && pSrc[i+1]<='9')
        {
            tmp |= pSrc[i+1] - '0';
        }
        else
        {
            tmp |= pSrc[i+1] - 'A' + 10;
        }
               
                // save to destination
                *pDst++ = tmp;
        }

        return SrcLen/2; // pDst length
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-5-7 12:16:16 | 只看该作者
直接用指针来做大小的比较??
这种比较的意思是不是比较这个指针是不是在这个地址范围里呀?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-5-7 12:49:00 | 只看该作者
笔误吧,if ((*pSrc >= 0x30 )&& (*pSrc <= 0x39)); tmp = (*pSrc - '0') << 4;
这样差不多。
你这里'0',48,0x30都表示一个意思,输入哪种都可以。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-5-7 12:54:42 | 只看该作者

回复 9# 的帖子

哦,明白啦,谢谢!!我试试看。O(∩_∩)O~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 03:33 , Processed in 0.071153 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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