C和C++高手进,有个列子,详细讲解下!谢谢拿分走人哈!马上结贴!

chenkui2008 2010-05-14 01:48:09
char cCode="AAAA#90#899u";

char *P;
char *p2;
p=strstr(cCode,"#");//什么意思,求详解,越详细越好
if(p!=NULL){
p2=strstr(p+1,"#");什么意思,求详解,越详细越好
strncpy(cNumber,p+1,p2-p-1);什么意思,求详解,越详细越好
strncpy(cProductId,cCode,p-cCode);什么意思,求详解,越详细越好
}
结果我知道cNumber=90;cProductId=AAAA;
主要是这个里面关于指针操作的具体思路怎么走的,我现在求过程,越通俗越好!指针和指针值,以及p2-p-1代表什么,高手解释下,拿分走人哈!马上结贴!
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanmie_09 2010-05-14
  • 打赏
  • 举报
回复
char *P;
char *p2;
p=strstr(cCode,"#");//什么意思,求详解,越详细越好
//在串cCode中查找字串"#",找到的话,p指向第一次出现的'#'字符地址,如果没找到,p指向NULL。
if(p!=NULL){ //判断是否找到子串"#"
p2=strstr(p+1,"#");什么意思,求详解,越详细越好
//在串cCode中从第一次找到'#'字符的下一个位置开始查找字串"#",找到的话,p2指向原串cCode中第2次出现的'#'字符地址,如果没找到,p2指向NULL。
strncpy(cNumber,p+1,p2-p-1);什么意思,求详解,越详细越好
//将两次查找的'#'之间的字符赋值给cNumber.不包含开始和结束的'#'
strncpy(cProductId,cCode,p-cCode);什么意思,求详解,越详细越好
//将原串cCode开始到遇到第一个'#'之间的字符赋值给cProductId, 包含开始字符,但不包含'#'
}
if(p!=NULL){
p2=strstr(p+1,"#");什么意思,求详解,越详细越好
strncpy(cNumber,p+1,p2-p-1);什么意思,求详解,越详细越好
strncpy(cProductId,cCode,p-cCode);什么意思,求详解,越详细越好
}
lylm 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 chenkui2008 的回复:]
char cCode="AAAA#90#899u";

char *P;
char *p2;
p=strstr(cCode,"#");//在cCode查找第一个#,找到的话p指向这个位置,找不到NULL
if(p!=NULL) //找到了#
{
p2=strstr(p+1,"#"); //找第二个#,p2指向这个位置
strncpy(cNumber,p+1,p2-p-1); //p这时指向第一个#,p+1指向“9”,p2-p-1是长度,这时是2,所以copy后cNumber=“90”
strncpy(cProductId…… //同上
[/Quote]
应该明白了吧?
hzy694358 2010-05-14
  • 打赏
  • 举报
回复
char cCode="AAAA#90#899u"
p=strstr(cCode,"#");//找到第一个#的位置:第5个位置,即p=5

p2=strstr(p+1,"#");//从p=5开始再查找#,即从“9”开始找到#位置:第8个位置,即p2=8
strncpy(cNumber,p+1,p2-p-1);//把从p+1位置:“9”开始的p2-p-1:2个字符,拷到cNumber,即:90
strncpy(cProductId,cCode,p-cCode);//cCode:即字串的起始位置:0,把开头到p-cCode:4个字符
//拷到cProductId,即AAAA
冻结 2010-05-14
  • 打赏
  • 举报
回复

strncpy

原型:extern char *strncpy(char *dest, char *src, int n);

用法:#include <string.h>

功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。

说明:
如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。
如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
冻结 2010-05-14
  • 打赏
  • 举报
回复

strstr

原型:extern char *strstr(char *haystack, char *needle);

用法:#include <string.h>

功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。

说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

CHUCHU110 2010-05-14
  • 打赏
  • 举报
回复
顶!
看不懂!!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧