私はファイルの解析に取り組んでおり、strtok()
関数を使用してプロセスを支援しようとしています。テキスト ファイルからの次の抜粋を想像してください。
.text
main:
lw $a0, array
lw $a2, size
loop:
add $t2, $a0, $t2
sw $t0, 0($t2)
bne $t3, $zero, loop
li $v2, 8
syscall
.data
array: .word 0:10
message: .asciiz "Hello"
現在、このようなファイルを 1 行ずつ取得しています。main:
、、、、のように末尾にコロンが含まれる行がある場合に知りloop:
たいarray:
ですmessage:
。
そのために、このコードを使用してみました。
char *token;
token = strtok(line, ":");
if (token != NULL)
{
//Do things with the token I grabbed
}
したがって、strtok
一度だけ呼び出してトークンとして保存すると、区切り文字が行に存在する場合にのみトークンの値を保存していると想定しました。それ以外の場合、トークンは NULL になります。したがって、トークンがnullでないかどうかを確認すると、トークンに「:」が含まれている行が確実にあるため、最初に必要だった行を取得できると思いました。
このコードが私のプログラムで実行されると、すべての行の最初の「単語」が取得され、トークンとして保存されます。また、何もない行 (空白行) については、NULL と見なされないため、ガスを節約できます。
これは少し混乱を招く可能性があるため、明確化が必要な場合はお知らせください。