先输入一个数表示要输入的字符串的个数,然后让换行输入的多个字符串存到数组中,当字符串的个数达到后按照首字母顺序换行输出
char* str[N]没有申请空间,在scanf()前需要str[a] = (char*)malloc(N);
scanf("%s",str[a])
具体修改如下:
你自己根据上面该一下或者参考我写的。
代码修改如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10000
int main()
{
int num;
int i,j;
char* str[N] = {0};
char tmp[N];
int a = 0;
printf("Please enter a positive integer not less than 5.\n");
scanf("%d",&num);
getchar(); //吸收回车符
//输入num个字符串
while(a < num)
{
str[a] = (char*)malloc(N);
memset(str[a],0,N);
scanf("%s",str[a]);
a++;
}
//比较字符串
for (i=0;i<num-1;i++)
{
for (j=0;j<num-1-i;j++)
{
if(strcmp(str[j],str[j+1]) > 0)
{
memset(tmp,0,N);
strcpy(tmp,str[j]);
memset(str[j],0,N);
strcpy(str[j],str[j+1]);
memset(str[j+1],0,N);
strcpy(str[j+1],tmp);
}
}
}
//打印
for (i=0;i<num;i++)
printf("%s",str[i]);
//释放空间
for (i=0;i<num;i++)
free(str[i]);
return 0;
}