Как написать ниже код в C? Также: есть ли встроенная функция для проверки длины массива?
Код Python
x = ['ab', 'bc' , 'cd']
s = 'ab'
if s in x:
//Code
Как написать ниже код в C? Также: есть ли встроенная функция для проверки длины массива?
Код Python
x = ['ab', 'bc' , 'cd']
s = 'ab'
if s in x:
//Code
Нет функции для проверки длины массива в C. Однако, если массив объявлен в той же области, где вы хотите проверить, вы можете сделать следующее
int len = sizeof(x)/sizeof(x[0]);
Вам нужно выполнить итерацию через x и выполнить strcmp для каждого элемента массива x, чтобы проверить, совпадает ли s с одним из элементов x.
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++;
}
}
Существует функция поиска длины строки. Это strlen
от string.h
И затем вы можете использовать strcmp
из того же заголовка для сравнения строк, как говорят другие ответы.
Возможная реализация C для Python in
методе может быть
#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
позволяет упростить сравнение строк с разными размерами. Больше о них обоих в их manpage.
Я бы предпочел не добавлять как можно меньше библиотек и думать, что зависимость от strncmp не нужна.
Вот функция;
// identifies if item is in array
// returns 0 if fail, sequence if true
int inarray(char **array, char *item){
int i,j,x=0;
for(i=0;i<sizeof(array); i++){
if(sizeof(item)==sizeof(array[i])){
j=0;
while(j<sizeof(item)){
if(item[j]!=array[i][j])
break;
if(j==sizeof(item)-1)
x++;
j++;
}
}
}
return x;
}
и тестовый драйвер
// inarray.c
#include <stdio.h>
int inarray(char**, char*);
int main (int argc, char **argv){
int x;
char *item = "def";
char *array[] = {"abc","bcd","cde","def","efg","fgh","ghi","hij"};
x = inarray(array, item);
printf("Sequence in array = %d\n",x);
}