2

文字の配列を指定するかどうかを確認しようとしていました-このように

char  array_values[] = { 'A','B','C','D','a','b','c','d' };

次に、複数の文字列で一種の文字マッチングを実行します。

....
str1 = 'AACDBACBAabcAcddaAABD'
str2 = 'aacbdAABDCAaDDCBCAabc'
....

次に、文字列に存在する各文字の数を返します。

Python、R、perlで簡単にできることは知っていますが、Cでこれを理解したかったのです。正規表現のようなものでしょうか?何か案は?

4

1 に答える 1

4

C でこれを行う最も簡単な方法は、 に存在するかどうかに関係なく各文字をカウントし、アイテムをカウントの配列へのインデックスとしてarray_values使用して結果を取得することです。array_values

int count[256];
for (int i = 0 ; i != 256 ; count[i++] = 0);
// The example works with a single string. For multiple strings,
// iterate over the strings from your source in a loop, assigning str
// and incrementing the counts for each of your strings.
char *str = "AACDBACBAabcAcddaAABD";
for (char *p = str ; *p ; count[(unsigned char)*p++]++);
char array_values[] = { 'A','B','C','D','a','b','c','d' };
for (int i = 0 ; i != 8 ; i++) {
    printf("Found '%c' %d times", array_values[i], count[(unsigned char)array_values[i]]);
}

これはideoneのデモです。

于 2013-05-09T13:06:44.430 に答える