#include<stdio.h>#include<stdlib.h>#include<string.h>#defineM3#defineN80//初始化所需变量voidinitialVar(char***str,int m,int n,char**name){*str =(char**)malloc(m *sizeof(char*));for(int i =0; i < m; i++){(*str)[i]=(char*)malloc(n *sizeof(char));}*name =(char*)malloc(n *sizeof(char));}//输入字符串voidinputStr(char**str,int m){printf("Enter %d Strings:\n", m);for(int i =0; i < m; i++){printf("Enter No.%d Strings: ", i +1);gets(str[i]);}printf("\n");}//对字符串进行升序排列voidascendingSortStr(char**str,int m,int n){char*temp =(char*)malloc(n *sizeof(char));for(char**p = str; p < str + m; p++){for(char**q = p +1; q < str + m; q++){if(strcmp(*p,*q)>0){strcpy(temp,*p);strcpy(*p,*q);strcpy(*q, temp);}}}free(temp);}//输入文件名称voidinputFileName(FILE **file,char*name){printf("Enter File Name: ");scanf("%s", name);*file =fopen(name,"r");if(*file ==NULL){perror("Cannot open this file");system("pause");exit(0);}*file =fopen(name,"w+");}//将字符串写入文件voidinputFile(FILE **file,char**str,int m){for(int i =0; i < m; i++){fputs(str[i],*file);fputs("\n",*file);printf("%s\n", str[i]);}fclose(*file);putchar(10);}//释放分配变量的内存voidfreeVar(char***str,int m,char**name){for(int i =0; i < m; i++){free((*str)[i]);}free(*str);free(*name);}intmain(){FILE *file =NULL;char**str =NULL;char*name =NULL;initialVar(&str, M, N,&name);inputStr(str, M);ascendingSortStr(str, M, N);inputFileName(&file, name);inputFile(&file, str, M);freeVar(&str, M,&name);system("pause");return0;}