求前辈看看:输入n串字符,按由小到大的顺序输出,其中输入时为什么不能用gets函数?
#include"stdio.h"#include"string.h"
#include"stdlib.h"
main()
{
int i,j,n,k;
char a[81];
char *p=NULL;
printf("enter n:\n");
scanf("%d",&n);
if((p=(char *)malloc(n*81*sizeof(char)))==NULL){
printf("not can allocate memory\n");
exit(1);
}
printf("enter %d strings:\n",n);
for(i=0;i<n;i++)
scanf("%s",p+i*81); 为什么这里不能用gets(p+i*81)? 用gets时只能读入n-1行字符?
for(i=0;i<n-1;i++){
k=i;
for(j=k+1;j<n;j++){
if(strcmp(p+j*81,p+k*81)<0)
k=j;
strcpy(a,p+k*81);
strcpy(p+k*81,p+i*81);
strcpy(p+i*81,a);
}
}
for(i=0;i<n;i++)
puts(p+i*81);
free(p+i*81);
return 0;
}
另外这个程序有时会出现错误:貌似排序时会排错!!!