18

以下のコードをCで書く方法は?また、配列の長さをチェックするための組み込み関数はありますか?

Pythonコード

x = ['ab', 'bc' , 'cd']
s = 'ab'

if s in x:
  //Code
4

4 に答える 4

17

Cには配列の長さをチェックする関数はありません。ただし、チェックしたい場所と同じスコープで配列が宣言されている場合は、次のようにできます。

int len = sizeof(x)/sizeof(x[0]);

sがxの要素の1つと同じであるかどうかを確認するには、xを反復処理し、配列xの各要素に対してstrcmpを実行する必要があります。

char * x [] = { "ab", "bc", "cd" };
char * s = "ab";
int len = sizeof(x)/sizeof(x[0]);
int i;

for(i = 0; i < len; ++i)
{
    if(!strcmp(x[i], s))
    {
        // Do your stuff
    }
}
于 2012-12-03T05:57:22.653 に答える
12

このようなもの??

#include <stdio.h>
#include <string.h>

int main() {
    char *x[] = {"ab", "bc", "cd", 0};
    char *s = "ab";
    int i = 0;
    while(x[i]) {
        if(strcmp(x[i], s) == 0) {
            printf("Gotcha!\n");
            break;
        }
        i++;
    }
}
于 2012-12-03T05:59:10.513 に答える
2

Pythonのinメソッドの可能なC実装は次のようになります。

#include <string.h>

int in(char **arr, int len, char *target) {
  int i;
  for(i = 0; i < len; i++) {
    if(strncmp(arr[i], target, strlen(target)) == 0) {
      return 1;
    }
  }
  return 0;
}

int main() {
  char *x[3] = { "ab", "bc", "cd" };
  char *s = "ab";

  if(in(x, 3, s)) {
    // code
  }

  return 0;
}

strncmpの代わりにを使用strcmpすると、サイズの異なる文字列を簡単に比較できることに注意してください。両方の詳細については、マンページを参照してください。

于 2018-03-21T18:11:21.297 に答える
1

文字列の長さを求める関数があります。strlenからですstring.h

そしてstrcmp、他の回答が言うように、同じヘッダーからのを使用して文字列を比較することができます。

于 2012-12-03T06:57:46.257 に答える