我试图通过 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)
看看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)