下面的是字符串的排序
什么情况下要给字符串数组分配空间
char *str[100]
int a[100];
为什么sort();里面的char *pstr[]不用分配空间
还有不的排序好像有问题了 ,但是不知道要怎么改
#include "conio.h"
#include "stdio.h"
#include "malloc.h"
#define N 20
main()
{
void sort(char *pstr[N],int num);
char *str[N];
int num,i;
printf("Input the num:");
scanf("%d",&num);
for(i=0;i<num;i++) /* 输入字符串 */
{str[i]=(char *)malloc(sizeof(char)*N);
printf("please input the No.%d string:",i+1);
scanf("%s",str[i]);
}
sort(str,num);
for(i=0;i<num;i++)
free(str[i]);
getch();
}
void sort(char *pstr[N],int num)
{
int i,j;
char temp[N];
printf("------------------------------------\n");
for(j=0;j<num;j++) /* 冒泡排序 */
for(i=j;i<num;i++)
{
if( strcmp(*pstr[i] , *pstr[i+1] ) > 0 )
{ strcpy(temp,pstr[i]);
strcpy(pstr[i],pstr[i+1]);
strcpy(pstr[i+1],temp);
}
}
printf("After sort:\n"); /* 输入排序后的结果 */
for(i=0;i<num;i++)
{
printf("%s\n",pstr[i]);
}
}
[此贴子已经被作者于2007-3-24 19:56:49编辑过]
----------------解决方案--------------------------------------------------------
字符串要分配空间来存储.
----------------解决方案--------------------------------------------------------
字符串要分配空间来存储.
可是char *pstr[N] N是20 这不是已经分配了了一个空间了吗
如果是int pint[N]需不需要分配空间
----------------解决方案--------------------------------------------------------
我分配了空间后 输入字符串后,程序就自动退出了
#include "conio.h"
#include "stdio.h"
#include "malloc.h"
#define N 20
main()
{
void sort(char *pstr[N],int num);
char *str[N];
int num,i;
printf("Input the num:");
scanf("%d",&num);
for(i=0;i<num;i++)
{printf("please input the No.%d string:",i+1);
str[i]=(char *)malloc(sizeof(char)*N) ;
scanf("%s",*str[i]);
}
sort(*str,num);
getch();
}
void sort(char *pstr[N],int num)
{
int i,j;
char temp[N];
printf("------------------------------------");
for(j=0;j<num;j++)
for(i=0;i<num-j;i++)
{ pstr[i]=(char *)malloc(sizeof(char)*N);
if( strcmp( pstr[i] , pstr[i+1] ) > 0 )
{ strcpy(temp,pstr[i]);
strcpy(pstr[i],pstr[i+1]);
strcpy(pstr[i+1],temp);
}
}
printf("After sort:\n");
for(i=0;i<num;i++)
{printf("%s",pstr[i]);
free(pstr[i]);
}
}
[此贴子已经被作者于2007-3-23 23:17:57编辑过]
----------------解决方案--------------------------------------------------------
scanf("%s",*str[i]);
----------------解决方案--------------------------------------------------------
顶
----------------解决方案--------------------------------------------------------
编辑了 新问题
----------------解决方案--------------------------------------------------------