次の文字列を 3 つの個別の変数、つまり a、b、c に分けようとしています。
" mov/1/1/1,0 STR{7}, r7"
それぞれが文字列の異なるセグメントを保持する必要があります。例:
a = "mov/1/1/1,0"
b = "STR{7}"
c = "r7"
各コマンドの間にスペースまたはタブがある場合があります。これが、このコード部分をよりトリッキーにしている理由です。
文字列操作に ,を使用しようとしましstrtok
たが、うまくいきませんでした。
char command[50] = " mov/1/1/1,0 STR{7}, r7";
char a[10], b[10], c[10];
char * ptr = strtok(command, "\t");
strcpy(a, ptr);
ptr = strtok(NULL, "\t");
strcpy(b, ptr);
ptr = strtok(NULL, ", ");
strcpy(c, ptr);
しかし、これは変数として非常に厄介になりa, b
、c
必要以上の値を保持するようになり、プログラムがクラッシュします。
入力は次のものと異なる場合があります。
" mov/1/1/1,0 STR{7}, r7"
"jsr /0,0 PRTSTR"
"mov/1/1/0,0 STRADD{5}, LASTCHAR {r3} "
a、b、および c の値は、指定された文字列の別の部分に変更されます。
そのようなマナーには strtok よりも sscanf を使用する方が安全だと言われましたが、なぜ、どのように役立つのかわかりません。
ご意見をいただけるとさらに嬉しいです!