帮我看看两个简单的问题好吗

happygirl_05 2005-02-02 11:08:39
一字符指针指向字符串"abcdef"
现想将该字符串中的每个字符单独取出
1)分别存入不同数组中
2)存入已定义好的char *p[20]={"a","b","c","d","e","f"};
首先第一问题:这个 char *p[]应该怎样定义
第二问题:怎样将字符串存入
...全文
235 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
smileconfess 2005-02-03
  • 打赏
  • 举报
回复
char *pp[]就是二维指針char **pp.
因此这样赋值:
pp[i] = *(p+i);
happygirl_05 2005-02-02
  • 打赏
  • 举报
回复
都没看明白我的意思吗?
其实很简单,我就是想将"abcdef"打开,存成这样的形式:char *p[20]={"a","b","c","d","e","f"};
然后我要去读*p[20]里的内容
Leaveye 2005-02-02
  • 打赏
  • 举报
回复
char *ptr = "abcdef";
char *buffer = ( char * ) malloc ( 2 * ( len ( ptr ) + 1 ) * sizeof ( *ptr ) );
char **p = (char **) malloc ( len ( ptr ) * sizeof ( ptr ) );
int i = 0;
for ( i = 0; i < len ( ptr ); ++i )
buffer[ 2 * i ] = ptr[ i ], buffer[ 2 * i + 1 ] = '\0', p[ i ] = buffer + 2 * i;
agaric 2005-02-02
  • 打赏
  • 举报
回复
楼上做法是错的 大小自己指定
#define SIZE 100

(char *)malloc(SIZE*sizeof(char))
sky911911 2005-02-02
  • 打赏
  • 举报
回复
zhousqy()
你这个 p[++i] = (char *)malloc(sizeof(char));
是说我每一次都申请一个空间吗?。。字符类型的指针?。。
qingyuan18 2005-02-02
  • 打赏
  • 举报
回复
为什么要把这些字符单独取出?
kobefly 2005-02-02
  • 打赏
  • 举报
回复
楼主的意思是字符串数组

但是内存要自己申请的
daylove 2005-02-02
  • 打赏
  • 举报
回复
数组定义:char *p[20],这样就可以了。
或者是:
char str[ 20 ];
char *p;
p = str;

你知道字符串是以'\0'结束的,这里你可以用个循环每次读取一个字符,依次把它存入指定的数组就可以了
zhousqy 2005-02-02
  • 打赏
  • 举报
回复
char *ptr = "abcdef";
char *p[strlen(ptr)];
int i = -1;
while (ptr != NULL && *ptr != '\0') {
p[++i] = (char *)malloc(sizeof(char));
*p++ = *ptr++;
}
truewill 2005-02-02
  • 打赏
  • 举报
回复
你不是写好了吗

如果只是一个字符,何必要存成字符串呢

或者再看看string或MFC的CString
alanwangx 2005-02-02
  • 打赏
  • 举报
回复
都看过了
学习一下
smileconfess 2005-02-02
  • 打赏
  • 举报
回复
char *pp[]就是二维指針char **pp.

Leaveye 2005-02-02
  • 打赏
  • 举报
回复
你的目的不就是为了产生一个字符串数组 pp 使 pp[0] = "a"、... 么。

char *p = "abcdef";
char *buffer = ( char * ) malloc ( 2 * ( len ( p ) + 1 ) * sizeof ( char ) );
char **pp = ( char ** ) malloc ( len ( p ) * sizeof ( char * ) );
int i = 0;
for ( i = 0; i < len ( ptr ); ++i )
buffer[ 2 * i ] = p[ i ], buffer[ 2 * i + 1 ] = '\0', pp[ i ] = buffer + 2 * i;

经过这样的代码后,就可以得到 pp[0] = "a", pp[1] = "b", ..., pp[5] = "f" 了。
没懂你还有什么要求。
happygirl_05 2005-02-02
  • 打赏
  • 举报
回复
我想再说明下我的问题
就是有一个字符串,已经用一个指针指向它了char *p="abc"
我现在想将"abc"分开,分成"a","b","c"让每一个字符都成为字符串,最好存成这样的格式
char *pp[3]={"a","b","c"}
因为我最终要做的是,字符串的传送,只能传送字符串格式,而现在我只能得到"abc"我是要将"abc"分别传送所以才有了上面的问题,不知这次有没有写清楚问题,我试了好几个办法都没成功,所以上来请教下大家,希望能多给我几个思路,先谢谢了
Leaveye 2005-02-02
  • 打赏
  • 举报
回复
to happygirl_05():
在我贴的代码运行后。p[i] 存放的就是一个长度为 1 的字符串了。
tomlance 2005-02-02
  • 打赏
  • 举报
回复
char *p = "abcdef";
char pp[20];
int i = 0;

while(p++)
{
pp[i++] = *p;
}
JasonHeung 2005-02-02
  • 打赏
  • 举报
回复
虽然搞不懂你为什么这么做,但知道了你的要求。可以这样:
已知:char* p = "abcdef";
int len = strlen(p);
char**pp = new char*[len];
int i;
for (i = 0 ; i < len; ++i)
{
pp[i] = new char[2];
pp[i][0] = p[i];
pp[i][1] = 0;
}
m_nCount = len;//保存个数
pp就是你要要的字符串数组。用pp[i]进行使用。
最后释放:
for (i = 0 ; i < m_nCount; ++i)
{
delete[] pp[i];
}
delete[] pp;
pp = NULL;
CMyMfc 2005-02-02
  • 打赏
  • 举报
回复
搞不懂你为什么要这么做
happygirl_05 2005-02-02
  • 打赏
  • 举报
回复
我了解你的意思,可是我并不要你的那种格式啊
我想用数组来实现,
换句话就是说
指针指向一字符串"abcdef"
我想把字符串里的字符单独提取出来,存成这样的格式char*p[5]={"a","b","c","d","e","f"};
CMyMfc 2005-02-02
  • 打赏
  • 举报
回复
ok
加载更多回复(1)

69,369

社区成员

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

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