首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,帮忙修改下c语言的字符排序处理

2012-03-13 
紧急求助,帮忙修改下c语言的字符排序处理帮忙修改下啊,大虾.....紧急求助...s[]这样分配内存:s[i](char*)

紧急求助,帮忙修改下c语言的字符排序处理
帮忙修改下啊,大虾.....
紧急求助...
s[]这样分配内存:
s[i]=(char*)malloc(5*sizeof(char));

下面对这个排序:
void sorts(char*s[],int num)
{
  char *mk;
  printf("begin\n");
  int nm;
  nm=num-1;
  mk=(char *)malloc(5*sizeof(char));
  int i,j;
  printf("for begin %d\n",nm);
  for (i=0;i<=nm;i++)
  {
  for(j=0;j<=nm;j++)
  {
  int ru;
  ru=strcmp(s[j],s[i]);
  printf(" look ru=%d\n",ru);
  if (ru<0)
  {  
  strcpy(mk,s[j]);
  strcpy(s[j],s[i]);
  strcpy(s[i],mk);
  printf("%s\n",s[j]);
  printf("%s\n",s[i]);
  }  
  }
  }
}

[解决办法]

C/C++ code
#include<stdlib.h>#include<string.h>#include<stdio.h>int compare(const void*p1,const void* p2){    return strcmp( * ( char** ) p1, * ( char** ) p2  );}int main(){    int x=0;    char* sz[]={"222","111","444","000"};    qsort( (void*)sz ,4 ,4 , compare );    for(x=0;x<4;x++){        printf("%s\n",sz[x]);    }    return 0;}
[解决办法]
void sorts(char*s[],int num)//--->void sorts(char (*s)[5],int num)
{
char *mk;
printf("begin\n");
int nm;
nm=num-1;
mk=(char *)malloc(5*sizeof(char));
int i,j;
printf("for begin %d\n",nm);
for (i=0;i <=nm;i++)
{
for(j=0;j <=nm;j++)
{
int ru;
ru=strcmp(s[j],s[i]);
printf(" look ru=%d\n",ru);
if (ru <0)
{
strcpy(mk,s[j]);
strcpy(s[j],s[i]);
strcpy(s[i],mk);
printf("%s\n",s[j]);
printf("%s\n",s[i]);
}
}
}
//added
free(mk);
mk = NULL;
}
[解决办法]
改成这样:
char *s[5];
for (int i=0;i <5;i++) 

printf("请输入第%d个学生号\n",i); 
s[i]=(char*)malloc(sizeof(char)); 
scanf("%s",s[i]); 
}

热点排行