19

How to write below code in C? Also: is there any built in function for checking length of an array?

Python Code

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

if s in x:
  //Code
4
  • 2
    possible duplicate of stackoverflow.com/questions/8848940/… Commented Dec 3, 2012 at 5:57
  • 1
    This post is Python translating to C, so it can't be a duplicate of a question posed in C. Commented Dec 3, 2012 at 6:29
  • 1
    @CareyGregory Why not? The OP has to rewrite the whole program to C, the original Python code is not helpful. Commented Dec 3, 2012 at 7:37
  • 2
    Yes it is helpful. It specifies exactly what task the questioner is looking to accomplish. Commented Feb 16, 2015 at 21:53

4 Answers 4

19

There is no function for checking length of array in C. However, if the array is declared in the same scope as where you want to check, you can do the following

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

You have to iterate through x and do strcmp on each element of array x, to check if s is the same as one of the elements of 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
    }
}
Sign up to request clarification or add additional context in comments.

3 Comments

@CareyGregory - my original post wasn't incorrect - this way isn't a function. And it works only if the array is declared in the same scope.
I didn't say your post was incorrect; it wasn't. It was simply less than it could have been, but you fixed it. So all is well, yes? :-)
This is not exactly what OP wants as the conditional code would execute multiple times if the target string appears more than once in the array of strings, right?
12

Something like this??

#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++;
    }
}

Comments

3

A possible C implementation for Python's in method could be

#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;
}

Note that the use of strncmp instead of strcmp allows for easier comparison of string with different sizes. More about the both of them in their manpage.

Comments

1

There is a function for finding string length. It is strlen from string.h

And then you could use the strcmp from the same header to compare strings, just as the other answers say.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.