strtok を使用してファイルの行を渡したいです。値はコンマで区切られています。ただし、strtok は、スペースのみを含む空白行も読み取ります。このような状況でヌルポインタを返すことは想定されていませんか?
どうすればそのような行を無視できますか? NULLをチェックしようとしましたが、前述のように機能しません。
strtok を使用してファイルの行を渡したいです。値はコンマで区切られています。ただし、strtok は、スペースのみを含む空白行も読み取ります。このような状況でヌルポインタを返すことは想定されていませんか?
どうすればそのような行を無視できますか? NULLをチェックしようとしましたが、前述のように機能しません。
void function_name(void)
{
const char delimiter[] = ",";
char line_read[9000];
char keep_me[9000];
int i = 0;
while(fgets(line_read, sizeof(line_read), filename) != NULL)
{
/*
* Check if the line read in contains anything
*/
if(line_read != NULL){
keep_me[i] = strtok(line_read, delimiter);
i++;
}
}
}
だから説明する。
ファイル全体を1行ずつ(fgets
)で配列に読み込むwhileループを使用してファイルを読み込んでいますline_read
。
行を読み取るたびに、何かが含まれているかどうかを確認します(NULL
チェック)。
何かが含まれている場合は、それを使用して解析しstrtok
、読み込んでいます。含まれていない場合は、プログラムで明らかに使用していない配列にkeep_me
残ります。line_read