【发布时间】:2017-10-29 00:11:28
【问题描述】:
我想从 char 指针中获取子字符串,在第 1 行打印成功,但如果是第 2 行则不成功。但是在 cout 打印中是这样的。
为什么?我该如何纠正?
char* substring(const char* src, int start_index, int end_index){ // src - source
int length = end_index - start_index;
char *dest; // destination
if (length < 0) {
return NULL;
} else {
dest = (char*)malloc(sizeof (char)* (length + 1));
dest[length] = '\0';
memcpy(dest, src + start_index, length);
return dest;
}
}
int main() {
//char *p = "phab"; // line 1
char *p = substring("alphabet",2, 6); // line 2
cout << p << endl;
if (p == "phab") cout << "ok\n";
}
【问题讨论】:
-
你在混合 C 和 C++ 吗?
-
最后一行不好,你比较两个地址。如果要比较字符串,请使用 strcmp( )
-
@SouravGhosh:您不能在同一源代码中混合使用 C 和 C++。这是 C++,不是 C。
-
我错过了什么?
-
指针不是字符串,因此它没有“子字符串”。如果需要字符串,请使用字符串类。
标签: c++ pointers malloc substring memcpy