To ALL:
各位大虾,我正在学习C语言,昨天做了一个小题目,就是输入5个字符串,将其从小到大排序并输出,代码如下:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define SIZE 20
void main()
{
char *str[5],temp[SIZE];
printf("input five strings:\n");
for(int i=0; i<5; i++)
{
str[i] = (char*)malloc(sizeof(char)*SIZE);
if(str[i] == NULL)
{
printf("memory allocate failed!\n");
return;
}
fflush(stdin);
gets(str[i]);
}
printf("the input is:\n");
for(i=0; i<5; i++)
puts(str[i]);
printf("\n");
for(i=0; i<4; i++)
{
for(int j=i+1; j<5; j++)
{
if(strcmp(str[i],str[j]))
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
printf("the sort result is:\n");
for(i=0; i<5; i++)
puts(str[i]);
printf("\n");
for(i=0; i<5; i++)
free(str[i]);
for(i=0; i<5; i++)
str[i] = NULL;
return;
}
程序能够运行,但不能实现正常排序,起初我以为是我的排序算法有问题,但在输入整数的情况下是能够实现正确排序的,请问为什么字符串就不能够呢,程序问题出在哪里呢?