2015-10-05 116 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);