2012-10-23 153 views
2

我有一個整數值的字符串。例如20 200 2000 21 1如何從字符串中刪除第一個字c

我想刪除第一個單詞(在這種情況下爲20)。任何想法如何做到這一點?

我想過用類似...

sscanf(str, "/*somehow put first word here*/ %s", str); 

回答

5

如何

char *newStr = str; 
while (*newStr != 0 && *(newStr++) != ' ') {} 
+0

你可以只檢查0擺脫strlen的考驗!= *中newstr。 –

+0

更好,謝謝。 – DrummerB

1

你可以跳過所有字符的第一空間,然後跳過空間本身,就像這樣:

char *orig = "20 200 2000 21 1"; 
char *res; 
// Skip to first space 
for (res = orig ; *res && *res != ' ' ; res++) 
    ; 
// If we found a space, skip it too: 
if (*res) res++; 

此代碼段打印200 2000 21 1link to ideone)。

4

您可以使用strchr(),這將設置str到第一個空格之後的子字符串,或者如果沒有空格,則將其保留;

char *tmp = strchr(str, ' '); 
if(tmp != NULL) 
    str = tmp + 1; 
0

我發現的最簡單,最優雅的方式是做這樣的事情

int garbageInt; 
    sscanf(str, "%d %[^\n]\n",&garbageInt,str);