c语言中字符串 x,使用c语言解析字符串"176x144"中的数字

在做jpeg codec的时候,经常需要输入图片的大小,即长和宽。对于一个jpeg图片,它的大小几乎是任意的,所以只能用数字来表示,而不能选择cif,qcif等这类固定的图片格式。在用数字表示图片大小时,大家都习惯使用象176x144这样格式。为了获取长和宽,需要解析这个字符串。

下面,简单介绍一下在c语言中如何对176x144的解析。

#include

int main()

{

char *str = "176x144";

char *pDest;

char strTmp[100];

int g_pic_wid,g_pic_hei;

//将str所指字符串拷贝一份,存储在strTmp中,以供解析width

strcyp(strTmp,str);

//在strTmp中找到最后一个,即第一个出现的'x'的位置

pDest = strrchr((const char*)strTmp,(int)'x');

if(pDest)//如过找到了'x'

{

*pDest = '/0';//strTmp中的数据为“176/0144”,即截断了后面的数据

//将“176”转化为int类型

g_pic_wid = atoi(strTmp);

//在str中找到最后一个,即第一个出现的'x'的位置

pDest = strrchr((const char *)str, (int)'x');

if(!pDest)

pDest = str;

else

pDest++;//如果找到了,指向'x'的下一个位置

//将从pDest所指的位置往后的数据(即“144/0”)拷贝到strTmp中

strcyp(strTmp, pDest);

//将“144”转化为int类型

g_pic_hei = atoi(strTmp);

}

printf("pictrue width:%d, height:%d !/n",g_pic_wid, g_pic_hei);

pDest = NULL;

return 0;

}

这段函数中,大家可能对strrchr函数不大熟悉,下面将会对其做一个详细的介绍。

/*

Finds the last occurrence of ch in string.  The terminating null character is used as

part of the search.

查找在字符串中最后一次出现字符’ch’的位置。如果str中存在字符ch,返回出现ch的位置的指针;

否则返回NULL。

*/

#include

char * my_strrchr(const char * str,int ch)

{

char *p = (char *)str;

while (*str) str++;

while (str-- != p && *str != (char)ch);

if (*str == (char)ch)

return( (char *)str );

return(NULL);

}

int main()

{

char *str = "ammana_babi";

char * p;

char ch;

ch = '9';

p = (char *)my_strrchr(str,ch);

if(p == NULL)

printf("Can't find the character %c !/n",ch);

else

printf("Find the character %c !/n",*p);

ch = 'b';

p = (char *)my_strrchr(str,ch);

if(p == NULL)

printf("Can't find the character %c !/n",ch);

else

printf("Find the character %c !/n",*p);

system("pause");

return 0;

}

更多请看:http://www.chituwang.com/Article/IT/detail.aspx?articleid=18092

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值