#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include<Windows.h>
char** strN=NULL;
int len = 0;
void InputString(char* pInString)
{
/* 在这里实现功能 */
int i = 0, j = 0;
char* StrPtr1 = pInString;
char* StrPtr2 = pInString;
len = strlen(pInString);
strN = (char**)malloc(len * sizeof(char*));
//各子串内存清空
for (i = 0; i < len; i++)
{
strN[i] = (char*)malloc(len+1);
memset(strN[i],'\0',len+1);
}
//生成各子串
char *temp = NULL;
for (j = 0; j < len; j++)
{
temp = strN[j];
StrPtr1 += j;
strcpy(strN[j],StrPtr1);
strN[j] += strlen(StrPtr1);
strncpy(strN[j], StrPtr2, j);
strN[len] = '\0';
StrPtr1 = StrPtr2;
strN[j] = temp;
}
//对生成的子串排序
char *strTemp = (char*)malloc(len+1);
memset(strTemp,'\0',len+1);
for(i = 0; i < len; i++)
for(j = i; j < len; j++)
{
if(strcmp(strN[i],strN[j])>0)
{
strcpy(strTemp,strN[i]);
strcpy(strN[i],strN[j]);
strcpy(strN[j],strTemp);
}
}
for (i = 0; i < len; i++)
{
printf("%s \n",strN[i]);
}
return;
}
void FindString(int SerialNumber, char* pOutString)
{
/* 在这里实现功能 */
//InputString()
if(pOutString == NULL)
return;
else
strcpy(pOutString,strN[SerialNumber-1]);
return;
};
void Clear(void)
{
/* 在这里实现功能 */
for (int i = 0; i < len; i++)
{
free(strN[i]);
}
printf("len = %d\n",len);
}
int main()
{
char a[10] = "0";
InputString("abcdefg");
printf("\n");
FindString(3,a);
printf("%s\n",a);
Clear();
system("pause");
return 0;
}