文字列の文字がこの形式であるかどうかを確認したい:
hw:
+ 数字 1 文字 + ,
+ 数字 1 文字
hw:0,0
hw:1,0
hw:1,1
hw:0,2
Et cetera
/* 'hw:' + 'one numeric character' + ',' + 'one numeric character' */
私は見つけましstrncmp(arg, "hw:", 3)
たが、それは最初の3文字しかチェックしません。
strncmp(arg, "hw:", 3)
良いスタートです (一致が見つかった場合、関数はゼロを返すことに注意してください)。次に、それを確認する必要があります
これにより、次の式が得られます。
if (!strncmp(arg, "hw:", 3) && isdigit(arg[3]) && arg[4] == ',' && isdigit(arg[5])) {
...
}
isdigit(int)
文字が数字であることをテストするために を使用していることに注意してください。
数値が 1 桁を超える可能性がある場合は、 を使用できますsscanf
。これにより、値を取得することもできます。
int a, b;
if (sscanf(arg, "hw:%d,%d", &a, &b) == 2) {
...
}
GNU C ライブラリは正規表現をサポートしています。正規表現を学びたくない場合は、ヘッダーstrncmp
の関数と同様に繰り返し使用できます。ctype.h