字符串排序无法实现 编译老是过不去 求大神指导
字符串排序无法实现 编译总是过不去 求大神指导
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int size = 50;
char word[ size ][ size ] ;
bool cmp_inc( char * , char * );
bool cmp_dec( char * , char * );
int main( void )
{
int n = 0; // 输入的字符串个数
int first = 0;
while( cin >> n )
{
for( int i = 0 ; i < n ; i ++ )
{
cin >> word[ i ];
}
sort( word , word + n );
first = 1;
for( int i = 0 ; i < n ; i ++ )
{
if( first )
{
first = 0;
cout << word[ i ] ;
}
else
{
cout << " " << word[ i ];
}
}
cout << endl;
}
return 0;
}
bool cmp_inc( char * a , char * b )
{
int flag = strcmp( a , b );
return ( flag < 0 );
}
bool cmp_dec( char * a , char * b )
{
int flag = strcmp( a , b );
return ( flag > 0 );
}
------解决思路----------------------
仅供参考
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int size = 50;
char word[ size ][ size ] ;
bool cmp_inc( char * , char * );
bool cmp_dec( char * , char * );
int main( void )
{
int n = 0; // 输入的字符串个数
int first = 0;
while( cin >> n )
{
for( int i = 0 ; i < n ; i ++ )
{
cin >> word[ i ];
}
sort( word , word + n );
first = 1;
for( int i = 0 ; i < n ; i ++ )
{
if( first )
{
first = 0;
cout << word[ i ] ;
}
else
{
cout << " " << word[ i ];
}
}
cout << endl;
}
return 0;
}
bool cmp_inc( char * a , char * b )
{
int flag = strcmp( a , b );
return ( flag < 0 );
}
bool cmp_dec( char * a , char * b )
{
int flag = strcmp( a , b );
return ( flag > 0 );
}
------解决思路----------------------
仅供参考
//文件1中的内容排序并去重,结果保存到文件2中
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHARS 128 //能处理的最大行宽,包括行尾的\n和字符串尾的\0
int MAXLINES=10000,MAXLINES2;
char *buf,*buf2;
int c,n,hh,i,L;
FILE *f;
char ln[MAXCHARS];
int ignore_case=0;
int icompare(const void *arg1,const void *arg2) {
return stricmp((char *)arg1,(char *)arg2);
}
int compare(const void *arg1,const void *arg2) {
return strcmp((char *)arg1,(char *)arg2);
}
int main(int argc,char **argv) {
if (argc<3) {
printf("Unique line. Designed by zhao4zhong1@163.com. 2012-08-20\n");
printf("Usage: %s src.txt uniqued.txt [-i]\n",argv[0]);
return 1;
}
if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写
f=fopen(argv[1],"r");
if (NULL==f) {
printf("Can not find file %s!\n",argv[1]);
return 1;
}
buf=(char *)malloc(MAXLINES*MAXCHARS);
if (NULL==buf) {
fclose(f);
printf("Can not malloc(%d LINES*%d CHARS)!\n",MAXLINES,MAXCHARS);
return 2;
}
n=0;
hh=0;
i=0;
while (1) {
if (NULL==fgets(ln,MAXCHARS,f)) break;//
hh++;
L=strlen(ln)-1;
if ('\n'!=ln[L]) {//超长行忽略后面内容
printf("%s Line %d too long(>%d),spilth ignored.\n",argv[1],hh,MAXCHARS);
while (1) {
c=fgetc(f);
if ('\n'==c
------解决思路----------------------
EOF==c) break;//
}
}
while (1) {//去掉行尾的'\n'和空格
if ('\n'==ln[L]
------解决思路----------------------
' '==ln[L]) {
ln[L]=0;
L--;
if (L<0) break;//
} else break;//
}