以下のコードでは、strtok を使用して、次のようなファイルからコード行を解析します。
1023.89,863.19 1001.05,861.94 996.44,945.67 1019.28,946.92 1023.89,863.19
ファイルにはさまざまな長さの行が含まれている可能性があるため、fscanf は使用しません。以下のコードは、1 つの小さな不具合を除いて機能します。これは 1 回ループしすぎて、長い空の文字列 " " を読み込んでから、再度ループして null トークン "" を認識し、while ループを終了します。なぜこれができるのかわかりません。
どんな助けでも大歓迎です。
fgets(line, sizeof(line), some_file);
while ((line != OPC_NIL) {
token = strtok(line, "\t"); //Pull the string apart into tokens using the commas
input = op_prg_list_create();
while (token != NULL) {
test_token = strdup(token);
if (op_prg_list_size(input) == 0)
op_prg_list_insert(input,test_token,OPC_LISTPOS_HEAD);
else
op_prg_list_insert(input,test_token,OPC_LISTPOS_TAIL);
token = strtok (NULL, "\t");
}
fgets(line, sizeof(line), some_file);
}