2013-07-15 39 views
0

我在字符指針變量中有一個值,並且該值是動態更改的。從char *變量解析文件名

爲e.g

one case: 
    char *ptr = sometext || abc.txt; 

second case: 
    char *ptr = abc.txt || sometext; 

我在另一個變量只需要文件名。 海峽=的abc.txt

目前我使用的代碼:

CString str; 
char* lpszToToken = stLine.GetBuffer(stLine.GetLength()); 
char* lpszToken = strtok(lpszToToken, "|"); 
while(lpszToken != NULL) 
{ 
    lpszToken = strtok(NULL, "|"); 
    str = lpszToken; 
} 

,但它僅在第一種情況下工作: 我需要一個genric碼在兩個案件 任何想法運行? 謝謝,

回答

0

我的C是生鏽的,但爲什麼不喜歡:

char* fname = strtok(fileNames, "|"); 
while (fname != NULL) { 
    // do something with the file here.. 
    processFile(fname);    
    fname = strtok(NULL, "|");   // next. 
} 

此外,匈牙利命名法是編制一個可怕的方式。它有效地掩蓋了大多數含義的混淆,使得不透明和簡單的問題變得不透明。看看我的例子與你提供的gack相比有多可讀?

你的導師(和Petzold)非常不幸地被誤認爲是在教你這個。我建議寫「識字」代碼。

參見:

+0

請千萬不要用'strtok'。 .. –

+0

@ sasha.sochka請爲此類一般性陳述提供理由/鏈接。 – arne

+1

如果我的意見是在某個地方計算,我會投票表示'strtok'是迄今爲止設計的功能最差的(C) –

0

既然你有可用的CString,你可以使用的CString ::查找或CString的::記號化