How do I find the index of a character within a string in C?

前端 未结 5 1208
野的像风
野的像风 2021-01-31 15:12

Suppose I have a string \"qwerty\" and I wish to find the index position of the e character in it. (In this case the index would be 2)

相关标签:
5条回答
  • 2021-01-31 15:28

    Just subtract the string address from what strchr returns:

    char *string = "qwerty";
    char *e;
    int index;
    
    e = strchr(string, 'e');
    index = (int)(e - string);
    

    Note that the result is zero based, so in above example it will be 2.

    0 讨论(0)
  • 2021-01-31 15:32

    This should do it:

    //Returns the index of the first occurence of char c in char* string. If not found -1 is returned.
    int get_index(char* string, char c) {
        char *e = strchr(string, c);
        if (e == NULL) {
            return -1;
        }
        return (int)(e - string);
    }
    
    0 讨论(0)
  • 2021-01-31 15:38
    void myFunc(char* str, char c)
    {
        char* ptr;
        int index;
    
        ptr = strchr(str, c);
        if (ptr == NULL)
        {
            printf("Character not found\n");
            return;
        }
    
        index = ptr - str;
    
        printf("The index is %d\n", index);
        ASSERT(str[index] == c);  // Verify that the character at index is the one we want.
    }
    

    This code is currently untested, but it demonstrates the proper concept.

    0 讨论(0)
  • 2021-01-31 15:47

    What about:

    char *string = "qwerty";
    char *e = string;
    int idx = 0;
    while (*e++ != 'e') idx++;
    

    copying to e to preserve the original string, I suppose if you don't care you could just operate over *string

    0 讨论(0)
  • 2021-01-31 15:53

    You can also use strcspn(string, "e") but this may be much slower since it's able to handle searching for multiple possible characters. Using strchr and subtracting the pointer is the best way.

    0 讨论(0)
提交回复
热议问题