小问题,知道麻烦大家告诉一个下,怎么将char转换成char*?谢谢

weiyiabout 2008-03-31 07:57:32
比如我有一个
char* str[10];
我想把str[i]转化成char*类型的,应该怎么弄啊?谢谢
...全文
108 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiyiabout 2008-04-01
  • 打赏
  • 举报
回复
不好意思,是我的笔误,应该
char str[10];
谢谢大家了
wuyuncxl 2008-04-01
  • 打赏
  • 举报
回复
str[i] 本身就是char *的啊。
char* str[10]; 的意思是定义一个含有10个元素的数组,这个数组的每个元素都是一个指向字符串的指针。
qmm161 2008-04-01
  • 打赏
  • 举报
回复
str[i] 是 char 类型,一般只占 1byte
而 char *是指针,32位机上占 4bytes

你确定要这么转吗?
我看你有戏 2008-03-31
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

int main()
{
int i;
char **ptr;

ptr = (char **)malloc(sizeof(char*) * 5);
//开辟了4 × 5 个内存单元,用来放指针变量
for (i = 0; i < 5; i++)
*(ptr+i) = (char *)malloc(sizeof(char) * 20);
/*for (i = 0; i < 5; i++)
{
printf("%s\n",*(ptr+i) );
}
for (i = 0; i < 5; i++)
{
printf("%s\n",ptr[i] );
}*/
memcpy(*(ptr+0),"*(ptr+0)里的值",20);
memcpy(*(ptr+1),"*(ptr+1)里的值",20);
memcpy(*(ptr+2),"*(ptr+2)里的值",20);
memcpy(*(ptr+3),"*(ptr+3)里的值",20);
memcpy(*(ptr+4),"*(ptr+4)里的值",20);
for (i = 0; i < 5; i++)
{
printf("%s\n",*(ptr+i) );
}
for (i = 0; i < 5; i++)
{
printf("%s\n",ptr[i] );
}
//ptr[0] == *(ptr+0)
//ptr[1] == *(ptr+1)
//ptr[2] == *(ptr+2)
//ptr[3] == *(ptr+3)
//ptr[4] == *(ptr+4)

for(i = 0; i < 5; i++)//释放
free(*(ptr+i)); //释放*(ptr+i)指针所指的那块内存
free(ptr);

return 0;
}


我看你有戏 2008-03-31
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

int main()
{
int i;
char **ptr;

ptr = (char **)malloc(sizeof(char*) * 5);
//开辟了4 × 5 个内存单元,用来放指针变量
for (i = 0; i < 5; i++)
*(ptr+i) = (char *)malloc(sizeof(char) * 20);
/*for (i = 0; i < 5; i++)
{
printf("%s\n",*(ptr+i) );
}
for (i = 0; i < 5; i++)
{
printf("%s\n",ptr[i] );
}*/
memcpy(*(ptr+0),"*(ptr+0)里的值",20);
memcpy(*(ptr+1),"*(ptr+1)里的值",20);
memcpy(*(ptr+2),"*(ptr+2)里的值",20);
memcpy(*(ptr+3),"*(ptr+3)里的值",20);
memcpy(*(ptr+4),"*(ptr+4)里的值",20);
for (i = 0; i < 5; i++)
{
printf("%s\n",*(ptr+i) );
}
for (i = 0; i < 5; i++)
{
printf("%s\n",ptr[i] );
}
//ptr[0] == *(ptr+0)
//ptr[1] == *(ptr+1)
//ptr[2] == *(ptr+2)
//ptr[3] == *(ptr+3)
//ptr[4] == *(ptr+4)

for(i = 0; i < 5; i++)//释放
free(*(ptr+i)); //释放*(ptr+i)指针所指的那块内存
free(ptr);

return 0;
}


  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yunkaipx 的回复:]
例如:

C/C++ code
char str[15] = "who are you?";
int i =2;//i小于str的长度
char× pch = str + i;//pch指向str字符串的第三个字符'o'。
[/Quote]
应为:
例如:

char str[15] = "who are you?";
int i =2;//i小于str的长度
char× pch = str + i;//pch指向str字符串的第三个字符'o'。

  • 打赏
  • 举报
回复
例如:

char str[15] = "who are you?";
int i =2;//i小于str的长度
char× pch = str + i;//pch指向str字符串的第三个字符'o'。

  • 打赏
  • 举报
回复
例如:

char str[15] = "who are you?";
int i =2;//i小于str的长度
char× pch = str + i;//pch指向str字符串的第三个字符'o'。

fallinleave 2008-03-31
  • 打赏
  • 举报
回复
如果问题是
char str[LEN];
Convert str[x] to "value of str[x]";

char* pChar;
pChar = new char[2];
sprintf(pChar, "%c", str[x]);
  • 打赏
  • 举报
回复
.....这个
不用转
fallinleave 2008-03-31
  • 打赏
  • 举报
回复
你的str[i]本来就是char* 啊,同志

69,373

社区成员

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

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