在 C 中比较两个字符串时遇到问题

1 c malloc pointers

我试图通过 C 中的命令行参数接收两个字符串,然后比较它们。我知道它malloc返回一个void指针,尽管我不明白如何将它传递给我的比较函数,因为它正在寻找一个const void指针。我假设我将不得不将指向分配字符串的堆上的内存的指针 (?)

int cmpstringp(const void *arg1, const void *arg2);

int main(int argc, char **argv) {
    char *strOne;
    char *strTwo;
    int n = 10;
    strOne = (char *)malloc((n + 1) * sizeof(char));
    strTwo = (char *)malloc((n + 1) * sizeof(char));
    strOne = argv[1];
    strTwo - argv[2];
    cmpstringp(strOne, strTwo);
}

int cmpstringp(const void *arg1, const void *arg2) {
    const char * const * ptr1 = (const char **)arg1;
    const char * const * ptr2 = (const char **)arg2;

    const char *str1 = *ptr1; 
    const char *str2 = *ptr2;

    return strcmp(str1, str2);
}

Run Code Online (Sandbox Code Playgroud)

Sau*_*oat 5

看看strcmp直接应用到的返回值argv

int main(int argc, char * argv[])
{
    int ret;

    ret = strcmp(argv[1], argv[2]);
    if (ret == 0)
        printf("Equal strings.\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您希望有一个带有通用参数的函数来比较两个字符串(即使用 in qsort()),您可以这样做:

int string_cmp(const void * a, const void * b)
{
     return strcmp((const char*)a, (const char*)b);
}
Run Code Online (Sandbox Code Playgroud)