最后一个字后,我读了下面的行使用与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