2015-10-05 65 views
0

结束比方说,我有子串直到字符串

char* string = "1234567"; 

什么是获取字符串"234567"最简单的方法?

+2

'new_string = string + 1;' – amdixon

+0

谢谢!有用。 –

+0

似乎是一个XY问题。你究竟想要实现什么? –

回答

2

您可以只设置一个指针在第二字符以点带面的东西,如下列之一:

char *fromSecondChar = string + 1; 
char *fromSecondChar = &(string[1]); 

注意,这是不会做你想要的一个空字符串,你也许应该检查第一:

char *fromSecondChar = string; 
if (*string != '\0') fromSecondChar++; 

还铭记保持,这是一个指针到字符串字面本身,所以修改的正常规则(不要试图做到这一点)。如果你想独立盯着你可以修改,你需要strcpy它到别的地方。

或者你可以从strdup如果你满意的一个动态分配的缓冲区以及实现第二个字符实际上一个strdup(它不是由ISO C标准的规定)。这可以用类似的东西来完成:

char *fromSecondChar = strdup (string + 1); 
if (fromSecondChar == NULL) 
    doSomethingIntelligent(); 
: 
free (fromSecondChar); // at some point. 
1

如果你想子字符串应该在一个单独的内存中,那么你可以像下面这样做。

char new_string[max_size]; 
strcpy(new_string, old_string + 1);