2012-11-16 42 views
1

我想分割我的字符串和(\ n)新行,並希望得到新的字符串沒有\ n。我的代碼如下。謝謝。如何分割一個字符串和使用strtok的新行

token = strtok(NULL,"") 

上面的代碼片段將存儲「一些字符串和\ n」,因爲我只需要「一些字符串」。

我的數據看起來像這樣。

1,v1,p1,182,1665,unkn 
+0

'strtok(NULL; 「\ n」);'? –

+3

使用std :: string和算法在C++中完成它。更安全。 – DumbCoder

+0

@Daniel它打印NULLS – Teja

回答

3

如果數據看起來像這樣

char line[] = "1,v1,p1,182,1665,unkn\n"; 

你可以做這樣的事情(在C)

char* p = line + strlen(line) - 1; 
for (;*p != ','; --p) 
{ 
    ; 
} 
char* lastword = strtok(p + 1,"\n"); 
+0

這是有效的C99,但許多編譯器會更喜歡在頂部聲明的「lastword」(但當然仍在底部分配)。 – ams

+0

最好使用'strrchr'這樣的標準函數來查找最後一個逗號。 – ams

0

如果你正在做的是更換第一個換行符,那麼這是好多了:

char *tmp = strchr (str, '\n'); 
if (tmp) *tmp = 0; 

如果你正在替換字符串中的最後一個換行符,那麼這是更好的:

char *tmp = strrchr (str, '\n'); 
if (tmp) *tmp = 0;