以下のコードをCで書く方法は?また、配列の長さをチェックするための組み込み関数はありますか?
Pythonコード
x = ['ab', 'bc' , 'cd']
s = 'ab'
if s in x:
//Code
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
}
}
このようなもの??
#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++;
}
}
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
すると、サイズの異なる文字列を簡単に比較できることに注意してください。両方の詳細については、マンページを参照してください。
文字列の長さを求める関数があります。strlen
からですstring.h
そしてstrcmp
、他の回答が言うように、同じヘッダーからのを使用して文字列を比較することができます。