私は異なる命令を解析しようとしているアセンブリコードの行を持っています。 ここに私のテストファイルが文字列の部分文字列をsscanfと別々に読み取る方法
main: add $s0,$s1,$s2
nor $t0,$t1,$t2
addi $t0,$t1,50
ARR [i]は.instでは、命令が移入され、タブが、それは各ライン上のアドレスです。だから、基本的に、それぞれがARR [i]が.instが追加たりとADDI
if ((sscanf(arr[i].inst, "%[add]add", temp) == 1)
printf("add");
が正常に印刷されます声明で始まるadd命令が現れるたびに "追加"。しかし、どうすればaddiからaddを読み込まないようにすることができますか?これらは、2つの命令であり、私はこの1つ下の文はADDIのためにテストし、私はコメントで述べたように
あなたのコードは、入力に 'a'、' da'、 'dad'、' a'と 'd'の他のシーケンスが含まれている場合、' add'を表示します。書式文字列の末尾にある 'add'は決して一致しませんが、' sscanf() 'を呼び出す方法はありません。あなたはそれを間違ってやろうとしています。 ''%[a-z]」をスキャンし、その文字列とさまざまな選択肢を比較することを検討する必要があります。 'sscanf()'を各命令タイプごとにスキャンするのはよい方法ではありませんが、それはあなたが試みているようです。 –
あなたはちょうど文字列を解析するための最良の言語を選択しました:C(そして私は痛いほどscanfの文字範囲を思い出しました:)) –
'scanf(" add%* [\ t] ")'のようなものは、これは本当に正規表現の仕事だと思います。 –