最後一個字後,我讀了下面的行使用與fgets文件:退出While循環立即在一條線上
#C one two three four five six seven eight nine ten eleven
每個字(除#C)是一列標題。所以我的文件中有十一列。
我的目標是將這一行分成每個單詞的標記。另外,我需要指出的是有11個列標題。 (可以有或多或少的列標題比11)
我的問題是在這一行的末尾的空格。這裏是我使用的代碼:
while(1){
fgets(buffer,1024,filename);
if (buffer[1] == 'C'){
char* str = buffer+2;
char* pch;
pch = strtok(str," ");
while(pch != NULL){
pch = strtok (NULL, " ");
if (pch == NULL)break; //without this, ncol contains +1 the
//amount of columns.
ncol++;
}
break;
}
}
此代碼給我的NcoI = 11,而正常工作(注意,是在該行我讀的最後一個空格)
然而,如果我在該行末尾沒有空格,那麼它會給出ncol = 10並且不讀取最後一列。
我的目標是讓ncol = 11,不管末尾是否有空格。我只想讀最後一個單詞,檢查是否有更多的單詞,如果沒有,然後退出。
NULL和\ 0有什麼區別? @Philip – detraveller 2013-05-02 15:05:32
@detraveller:'NULL'是一個指針值,''\ 0''是一個字符。實際上,你的編譯器使得兩者都爲int,所以這只是爲了澄清。 '* pch =='\ 0''是檢查字符串長度爲0的最快方法。 – Philip 2013-05-02 15:09:42