如何将char *转换为char []

时间:2013-08-13 15:19:35

标签: c pointers dereference

我想知道是否有办法将char *指向其第一个字母的字符串转换为char [],因此它不再是指针,而是文字char []。

例如,如果我的字符串是"我的名字是bob \ 0",而char* pointer已经通过memcpy将此字符串复制到它,有没有办法将其转回炭[]?

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:3)

无需转换,您可以将指针索引为数组。你可以

char * a;
然后蚂蚁

char ch = a[4];

这是一个类似的问题here

其他方式也很容易

void f(int* p);

int x[5];
f(x);     // this is the same as f(&x[0])

答案 1 :(得分:1)

他们是一回事。 a [i]相当于*(a + i),以至于你可以写i [a]并获得相同的结果!

答案 2 :(得分:0)

这样的事情?

#define STRLEN (64)
char greeting[STRLEN];

strncpy(greeting,chrptr,STRLEN);

if (strlen(chrptr) > (STRLEN-1))
   greeting[(STRLEN-1)] = 0;

答案 3 :(得分:0)

使用strncpy或strcpy:

char *a = "hello world!";
int aLen = strlen(a);
char b[] = new char[aLen + 1]; // C++ version
// char* b = (char*)malloc((aLen + 1) * sizeof(char)); // C version
strncpy(b, a, aLen);
b[aLen] = '\0';