0

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

例如,如果我的字符串是“嗨,我的名字是 bob\0”,并且char* pointer通过 memcpy 将此字符串复制到它,有没有办法将其转回 char[]?

任何帮助,将不胜感激。

4

4 回答 4

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])
于 2013-08-13T15:21:30.013 回答
1

他们是一样的东西。a[i] 等价于 *(a + i),以至于你可以写 i[a] 并得到相同的结果!

于 2013-08-13T15:22:49.123 回答
0

像这样的东西?

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

strncpy(greeting,chrptr,STRLEN);

if (strlen(chrptr) > (STRLEN-1))
   greeting[(STRLEN-1)] = 0;
于 2013-08-13T15:22:49.013 回答
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';
于 2013-08-13T15:26:16.437 回答