当前位置: 代码迷 >> C语言 >> 字符串数组的空间分配问题 -------排序问题
  详细解决方案

字符串数组的空间分配问题 -------排序问题

热度:277   发布时间:2007-03-23 23:00:52.0
字符串数组的空间分配问题 -------排序问题

下面的是字符串的排序
什么情况下要给字符串数组分配空间
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编辑过]

搜索更多相关的解决方案: 分配问题  字符  空间  数组  str  

----------------解决方案--------------------------------------------------------

字符串要分配空间来存储.


----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2007-3-23 23:05:10的发言:

字符串要分配空间来存储.

可是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]);
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

编辑了 新问题


----------------解决方案--------------------------------------------------------
  相关解决方案