加班中,求助,一段内存与字符串的操作!~

reddatura 2004-10-02 03:27:25
我有一段内存
char * pData 已经指向了这段内存

里面连续存放了几个字符串
现在我想把几个字符串提取出来
但是办不到
我用char ** pTemp = &pData;
然后取pTemp[0], pTemp[1]
请问这样做有和问题?
为何我pTemp1[1]后面去出来的数据都不正确呢?

谢谢

...全文
129 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzheng318 2004-10-02
  • 打赏
  • 举报
回复
!!
sungp5211 2004-10-02
  • 打赏
  • 举报
回复
这样写程序不大好吧~~~不过,要是知道总长度的话,还能勉强用~~
同意hotrain兄弟。

hotrain 2004-10-02
  • 打赏
  • 举报
回复
“烟雨平生” 与 “老渔翁”的方法老有一个问题:都假定字符串之间只有一个0字符,如果有多个字符呢?怎么处理?

另外,pData所指有内存有多长?一共有几个字符串?这两个条件必须有至少有一个是确定的才行。

在“烟雨平生”与“老渔翁”所给答案的基础上,应该采用以下方法:
while(*p==0) p++; 这样跳过连续的0字符。

至于在上面提出的字符串数量或内存长度的条件,根据要求自己写算法吧。
thorn__bird 2004-10-02
  • 打赏
  • 举报
回复
接着使用上面的例子,可以使用更为简单的形式
#include"stdio.h"
#include"string.h"
int main(void)
{
char*pData="df1\0aut\0" ;

printf("%s\n",pData);
pData += strlen(pData)+1;
printf("%s\n",pData);

return 0 ;
}
sanzheng 2004-10-02
  • 打赏
  • 举报
回复
同意
knocker_k 2004-10-02
  • 打赏
  • 举报
回复
int main(void)
{
char*pData="df\0aut\0a" ;

char*pTemp=pData ;


while(*pTemp)printf("%c",*pTemp++);
printf("\n");
pTemp++;
while(*pTemp)printf("%c",*pTemp++);
printf("\n");
pTemp++;
while(*pTemp)printf("%c",*pTemp++);

return 0 ;
}
reddatura 2004-10-02
  • 打赏
  • 举报
回复
内存中
二进制的
64 64 00 61 75 74 00 61

锔个简单的例子
这段数据对应的是df aut a
三个字符串
我就要把它其取出来
不定厂的
willko 2004-10-02
  • 打赏
  • 举报
回复
因为pTemp是指向指针的指针。
*pTemp == pData
knocker_k 2004-10-02
  • 打赏
  • 举报
回复
举个例子吧
xingyafei 2004-10-02
  • 打赏
  • 举报
回复
字符串还是数组?
reddatura 2004-10-02
  • 打赏
  • 举报
回复
就是
这段内存中存储的数据

连续的几个字符串
而我要做的,就是提出取来这几个字符串
knocker_k 2004-10-02
  • 打赏
  • 举报
回复
1。与长度无关。
2。char **pTemp是两级指针
3。“不过我的内存时几个字符串练起来的”没有理解
reddatura 2004-10-02
  • 打赏
  • 举报
回复
whiteNing(翱翔的鹰)
能说得明白一点麻
我指针这里掌握的不是很好

谢谢 knocker_k(烟雨平生)
不过我的内存时几个字符串练起来的
不是一个,而且长度不定


whitening 2004-10-02
  • 打赏
  • 举报
回复
参照标准的 main()函数
main(int argc,char *argv[])啊
第二个参数每一个元素都是一个字符串啊
knocker_k 2004-10-02
  • 打赏
  • 举报
回复
int main(void)
{
char*pData="123456789" ;
char*pTemp=pData ;
int i ;
for(i=0;i<9;i++)printf("%c",pTemp[i]);
printf("\n\n\n");
while(*pTemp)printf("%c",*pTemp++);
return 0 ;
}
reddatura 2004-10-02
  • 打赏
  • 举报
回复
有人能回答我的问题麻
应该很简单的
knocker_k 2004-10-02
  • 打赏
  • 举报
回复
唉.........

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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