鉴于我已宣布:
char **string;
如何将其传递到另一个具有从某个位置开始的子串的函数?
我目前将其视为:
function((*string)[pos])
希望它是从位置pos
开始的子字符串。有什么建议吗?
答案 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*
,所以你正在使用的字符串是*string
(string
是指向字符串char*
的指针,所以你有取消引用它以获得实际的字符串)。
第一个是简单的指针添加,如(*string) + 7
中所示。这将为您提供从第八个字符开始的字符串。
第二个是获取起始字符的地址,如&((*string)[7])
。
如果你的字符串长度至少为第八个字符,那么这两个只会“起作用”。换句话说,不要试图超越字符串的末尾。