fgets を使用してファイルから次の行を読み込んでいます。
#C one two three four five six seven eight nine ten eleven
各単語 (#C を除く) は列見出しです。したがって、私のファイルには 11 列あります。
私の目的は、この行を各単語のトークンに分割することです。また、列見出しが 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;
}
}
このコードは私に ncol = 11 を与えます.そしてうまく動作します.(私が読んでいる行の最後に単一のスペースがあることに注意してください)
ただし、行末にスペースがない場合は、ncol = 10 となり、最後の列は読み取られません。
私の目的は、 not の最後にスペースがあるかどうかに関係なく、 ncol =11 を取得することです。最後の単語を読みたいだけで、他に単語があるかどうかを確認し、ない場合は終了します。