1

文字列の文字がこの形式であるかどうかを確認したい:

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文字しかチェックしません。

4

3 に答える 3

3

strncmp(arg, "hw:", 3)良いスタートです (一致が見つかった場合、関数はゼロを返すことに注意してください)。次に、それを確認する必要があります

  • 文字 3 は数字、
  • 文字 4 はコンマであり、
  • 文字 5 は数字です。

これにより、次の式が得られます。

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) {
    ...
}
于 2013-06-29T02:49:11.970 に答える
1

GNU C ライブラリは正規表現をサポートしています。正規表現を学びたくない場合は、ヘッダーstrncmpの関数と同様に繰り返し使用できます。ctype.h

于 2013-06-29T02:51:15.740 に答える