int compare( const void *arg1, const void *arg2 ) { /* Compare all of both st
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp(, * ( char** ) arg2 );
}
MSDN 上的一段程序
这里
* ( char** ) arg1
为什么要这样?跟(char*)arg1 有什么不同???
[解决办法]
不知,(char *)arg2 也可以编译通过的
等高手解释
[解决办法]
(char*)arg1 是把arg1当成char*
* ( char** ) arg1是把arg1当成char**,它传过去的是*arg1
[解决办法]
/* QSORT.C: This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
void main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( "%s ", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}