简单的字符排序程序,不知到怎样让它结束输入
1 #include<stdio.h>2 #include<stdlib.h>
3 #include<string.h>
4 #define LEN_MAX 512
5 #define NLINES_MAX 1000
6 char *linePtr[NLINES_MAX];
7 /******* 比较函数,共qsort调用,返回值必须是int类型。自变量 *P1与*P2分别是被排序的两个指针。**/
8 int qcompare (const void *p1,const void *p2)
9 { return strcmp(*(char**)p1,*(char**)p2);
10 }
11
12 /***iiread date from stdin standard date flow function**/
13 char *getline()
14 {
15 char buffer[LEN_MAX],*linePtr =NULL;
16 if(fgets(buffer,LEN_MAX,stdin) != NULL)
17 {
18 size_t len = strlen (buffer);
19 if( buffer[len-1] == '\n')
20 buffer[len-1]= '\0';
21 else
22 ++len;
23 if((linePtr =malloc(len))!=NULL)
24 strcpy(linePtr,buffer);
25 }
26 return linePtr;
27 }
28 int main(void)
29 {int n=0;//读取多少行
30 for( ; n<NLINES_MAX && (linePtr[n] = getline())!=NULL;++n);
31 if(!feof(stdin))//遇到文件结束符
32 {
33 if(n==NLINES_MAX)
34 fputs("sorttext:too many lines.\n",stderr);
35 else
36 fputs("sorttext:error reading from stdin.\n",stderr);}
37 else //sort and putout to screen
38 {
39 qsort( linePtr,n,sizeof(char*),qcompare);
40 for(char **p = linePtr;p<linePtr+n;++p)
41 puts(*p);
42 }
43
44
45 return 0;
46
47 }