⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 linux下Qsort的C语 言的实现
💻 C
字号:
#include <stdio.h>
//#include "qsort.h"
#include "q_sort.h"
#include "cmpnum.h"
#include "cmpstring.h"
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
extern char *optarg;
extern int optind;
extern int optopt;
extern int opterr;
extern int optreset;
int getopt(int argc, char * const *argv, const char *optstring);

char* base[100];

size_t read_in(){
	char c;
	char arr[100];
	int i=0,size=0;
	  while ((c = getchar()) != 0x00A)
	    {
	if(c!=0x020){
		arr[i]=c;i++;}
	else if(c==0x020 && i!=0){
	arr[i]='\0';
	base[size]=malloc(i+1);
	strcpy(base[size],arr);
	i=0;
	size++;}
	    }
	 return size;
};



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

    int sflag=0, nflag=0, rflag=0;
    int ch;
    //opterr = 0;

    while ((ch = getopt(argc, argv, "snr")) != -1)
    {

        switch (ch) {
        case 's':
            printf("string sort\t");
            sflag = 1;
            break;
        case 'n':
            printf("num sort\t");
            nflag = 1<<0x1;
            break;
        case 'r':
            printf("reverse sort\t");
            rflag = 2<<0x1;
            break;
        case '?':
            printf("Unknown option: %c\n",(char)optopt);
            break;
        }
    }

int flag=sflag | nflag | rflag;
size_t size;
int i=0;
switch(flag){
case 0://????????
	printf("string sort\t");
case 1://?????
	printf("enter:\n");
	size = read_in();
	q_sort(&base, size, sizeof(char *), cmpstring);
	for (i=0; i < size; i++)
				printf("%s\n", base[i]);
break;
case 4://?????,????
	printf("string sort\t");
case 5://????????,????
	printf("enter:\n");
	size = read_in();
		q_sort(&base, size, sizeof(char *), cmpstring);
		for (i=size-1; i >=0; i--)
					printf("%s\n", base[i]);
break;
case 2://???????????(?????)??
	printf("enter:\n");
	size = read_in();
			q_sort(&base, size, sizeof(char *), cmpnum);
	for (i=0; i < size; i++)
					printf("%s\n", base[i]);
break;
case 6://???????????(?????)??,????
	printf("enter:\n");
	size = read_in();
				q_sort(&base, size, sizeof(char *), cmpnum);
				for (i=size-1; i >=0; i--)
									printf("%s\n", base[i]);
break;
default://????
printf("error option!\n");
break;
}
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -