我想知道是否有办法将char *指向其第一个字母的字符串转换为char [],因此它不再是指针,而是文字char []。
例如,如果我的字符串是"我的名字是bob \ 0",而char* pointer
已经通过memcpy将此字符串复制到它,有没有办法将其转回炭[]?
任何帮助都将不胜感激。
答案 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';