C中的子串

时间:2011-10-17 07:25:40

标签: c pointers substring

鉴于我已宣布:

char **string;

如何将其传递到另一个具有从某个位置开始的子串的函数?

我目前将其视为:

function((*string)[pos])

希望它是从位置pos开始的子字符串。有什么建议吗?

5 个答案:

答案 0 :(得分:1)

string的类型为char **

string的类型为char **。 (指向你的字符串)
*string的类型为char *。 (字符串本身)
**string的类型为char。 (字母表中的一个字母)

所以你想要偏移到字符串本身:

(*string) + pos

,其类型为char *

答案 1 :(得分:1)

char **string;
function((*string) + pos)

char *string;
function(string + pos)

答案 2 :(得分:0)

(*string)[pos]表示位置pos处的字符。您可能需要(*string) + pos

答案 3 :(得分:0)

您可以将整个字符串的指针传递给函数以及整数长度,该函数将在其逻辑中考虑该函数。

或者,您可以使用指针算法提取特定的子字符串(假设您只想修剪字符串前面的字符):

char * x = "Some text";
char * y;
y = x + 5;

现在,y指向字符串“text”。 http://codepad.org/icVjE6in

或者,提取具有特定开始和结束的子字符串将需要使用该字符串和strncpy

答案 4 :(得分:0)

我知道有两种方法可以做到这一点。它们都需要char*,所以你正在使用的字符串是*stringstring是指向字符串char*的指针,所以你有取消引用它以获得实际的字符串)。

第一个是简单的指针添加,如(*string) + 7中所示。这将为您提供从第八个字符开始的字符串。

第二个是获取起始字符的地址,如&((*string)[7])

如果你的字符串长度至少为第八个字符,那么这两个只会“起作用”。换句话说,不要试图超越字符串的末尾。