Preguntas sobre programación en lenguaje C. Ordenar por código de producto (tipo de carácter), si es así, ordenar por cantidad (plástico).
Primero cree una función de comparación y luego llame a qsort directamente. Si lo hace usted mismo,
Será problemático hacer coincidir diferentes tipos. Requiere un poco de esfuerzo.
void qsort(
void *base,/* Los primeros datos pueden considerarse como la primera dirección de la matriz*/
size_t num,/* Número de elementos Número*/
size_t width,/*Tamaño de datos, se puede obtener mediante sizeof*/
int (__cdecl *compare)(const void *, const void *) /*Comparar función, */
);
Comparar funciones y requisitos relacionados.
compare( (void *) & elem1, (void *) & elem2 );La rutina debe comparar los elementos y luego devolver uno de los siguientes
valores:
Comparar valor de retorno de función
Descripción
< 0
elem1 menor que elem2
elem1 equivalente a elem2
> 0
PD:
si no (strcmp(sell[i].dm,sell[j].dm==0))
Simplemente no vi que esto fuera lo que salió mal
> 0
PD:
else if(strcmp(sell[i].dm, sell[j ].dm==0))
...
debe escribirse como
else if(strcmp(sell[i].dm ,sell[j] .dm)==0)
...
advertencia C4047: 'función': 'const char *' difiere en niveles de direccionamiento indirecto de 'int '
Se refiere a sell[j].dm==0 el tipo es entero
advertencia C4024: 'strcmp': diferentes tipos para el parámetro 2 formal y real
Porque sell[ El tipo j].dm==0 es un número entero, lo que no cumple con el requisito de strcmp de que ambos parámetros sean const char *.
¡Entonces se genera una advertencia!
Dado que el puntero de C++ es en realidad un tipo de datos enteros, ¡la verificación de tipo no lo juzgará como un error!
Estrictamente hablando, ¡debería ser un error, no una advertencia! ! !
difieren diferentes
indirección medios indirectos, indirectos, deshonestos
formal: formal; etiqueta
real: real; actual; actual
La primera advertencia dice que los tipos de parámetros de función son inconsistentes,
La segunda advertencia dice que el segundo parámetro y el requisito de strcmp no coinciden.